Vinnaren i pepparkakshustävlingen!
2013-02-02, 22:21
  #1
Medlem
Såhär ser min tabell ut:

SELECT * FROM people WHERE id = $user_id

Sen vill ja kolla om personen spelar fotboll. Om om han gör det, hämta hans sportinformation.
Logiskt tänkade vill ja ha något sånt här:

SELECT * FROM people IF(people.soccer == TRUE) JOIN soccer ON people.id = soccer.user_id ELSE do nothing WHERE id = $user_id

Alltså, om kolumnen soccer är 1 så joinar man en tabell, annars gör man det inte. Vill undvika att ha 2 querys.
Citera
2013-02-02, 22:43
  #2
Medlem
darcodes avatar
En vanlig (inner) JOIN gör just detta. Med join-vilkoret "ON people.id = soccer.user_id" kommer du bara få ut rader som finns i båda tabellerna. Om du vill ha alla rader i people-tabellen intakta och låta soccer-kolumnerna vara NULL där det inte finns någon information kan du göra en LEFT JOIN istället.

Nu har du ju inte riktigt beskrivit hur dina tabeller ser ut, eller vad du försöker åstakomma, men spontant känns det som du bör se över din databasdesign om denna typen av frågor uppkommer.
Citera
2013-02-02, 22:48
  #3
Medlem
xitunos avatar
Det kan också vara en idé att berätta vilken databasmotor du använder.
Citera
2013-02-02, 22:50
  #4
Medlem
mysql
Citera
2013-02-03, 13:59
  #5
Medlem
Det låter som det är LEFT JOIN du vill göra.
Citera
2013-02-04, 09:54
  #6
Medlem
Bongomans avatar
Citat:
Ursprungligen postat av poussard
Det låter som det är LEFT JOIN du vill göra.

Det låter som att det INTE är en LEFT JOIN han vill.
Citera
2013-02-04, 12:28
  #7
Medlem
Citat:
Ursprungligen postat av Bongoman
Det låter som att det INTE är en LEFT JOIN han vill.

IF(people.soccer == TRUE) JOIN soccer

Låter som han vill joina bara om det finns nåt i soccer, alltså vill han göra en LEFT JOIN. I annat fall missar han alla personer som saknar nåt i soccer.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback