Kom ihåg mig?
Home Menu

Menu


Litet SQL-problem. Hjälp?

Ämnesverktyg Visningsalternativ
Oläst 2009-10-02, 17:27 #1
Landos avatar
Lando Lando är inte uppkopplad
Medlem
 
Reg.datum: Nov 2008
Inlägg: 242
Lando Lando är inte uppkopplad
Medlem
Landos avatar
 
Reg.datum: Nov 2008
Inlägg: 242
Question Litet SQL-problem. Hjälp?

Hej!

Jag har ett problem med SQL och ännu mer specifikt JOIN.

Jag har en tabell med bloggkommentarer och en tabell med användare. Min SQL ser ut typ så här:

SELECT * FROM blogg JOIN blogg ON users.id=blogg.writer

Problemet är att om det inte finns någon user till inlägget (tex som användaren är raderad eller inlägget är anonymt) kommer inte SQL-datan innehålla den raden.

Hur gör jag för att JOINA 2 tabeller men om den ena, i detta fallet users är tom så lämnar den bara en tom ruta i SQL-datan. Dvs:

blogg = 1, user ='1';
blogg = 2, user ='2';
blogg = 3, user ='';
blogg = 4, user ='4';

Istället för:

blogg = 1, user ='1';
blogg = 2, user ='2';
blogg = 4, user ='4';

Tacksam för svar
Lando är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-02, 17:53 #2
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
Antar du joinar med users-tabellen?

SELECT * FROM blogg LEFT JOIN users ON users.id=blogg.writer;

De borde ge NULL om en användare saknas, om du vill ha annat kan du köra en IF-statement. ( http://dev.mysql.com/doc/refman/5.0/...ml#function_if )
nosnaj är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-02, 20:30 #3
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Det låter som extremt dålig design om man kan radera ett nyckelvärde som en user som skrivit inlägg. Du borde i stället införa en refensiell integritet som omöjliggör att en user som skrivit minst ett inlägg raderas. Inför i stället något som kallas "mjukt borttag" genom att införa ett logiskt värde i usertabellen som heter typ "raderad" och kan vara true/false. Sen får du kolla det värdet vid inloggning så användaren inte kan logga in igen. Men usern borde alltid visas eftersom denne har skrivit inlägg.

Om en user inte har skrivit några inlägg så kan det vara OK att radear denne.
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-10-02, 23:43 #4
Landos avatar
Lando Lando är inte uppkopplad
Medlem
 
Reg.datum: Nov 2008
Inlägg: 242
Lando Lando är inte uppkopplad
Medlem
Landos avatar
 
Reg.datum: Nov 2008
Inlägg: 242
LEFT JOIN funkade utmärkt.

Tack!
Lando är inte uppkopplad   Svara med citatSvara med citat
Svara

Taggar
sql databas join


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 19:22.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017