FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
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 ![]() |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Har WN som tidsfördriv
|
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 ) |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Klarade millennium-buggen
|
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. |
||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Medlem
|
LEFT JOIN funkade utmärkt.
Tack! |
|||
![]() |
![]() |
Svara |
|
|