Avatar billede razmuzdk Nybegynder
31. august 2004 - 19:40 Der er 7 kommentarer og
1 løsning

IF i mysql?

Jeg har dette sql-kald:
SELECT
s.spiller_id,
s.navn,
s.udmaerkelse,
UNIX_TIMESTAMP(s.skade) AS skade,
UNIX_TIMESTAMP(s.skade2) AS skade2,
s.klub_id,
s.natio_id,
n.tekst,
k.klub_id,
k.klubnavn

FROM
spillere as s,
nationaliteter as n,
klubber as k

WHERE s.navn LIKE '%$_GET[word]%' AND n.natio_id=s.natio_id AND s.klub_id=k.klub_id


Jeg troede den virkede fint, indtil jeg fandt ud af at den ikke modtager records fra spillere hvor spillere.klub_id er NULL (hvilket jo må være grundet "s.klub_id=k.klub_id"). Det skal den! - så kan den af gode grunde ikke finde information fra tabellen klubber, men det er ok.

Hvordan gør man det?

Håber i forstår :-)

mvh.
Rasmus
Avatar billede jpvj Nybegynder
31. august 2004 - 19:46 #1
Prøv

SELECT
s.spiller_id,
s.navn,
s.udmaerkelse,
UNIX_TIMESTAMP(s.skade) AS skade,
UNIX_TIMESTAMP(s.skade2) AS skade2,
s.klub_id,
s.natio_id,
n.tekst,
k.klub_id,
k.klubnavn

FROM
spillere as s,
nationaliteter as n,
klubber as k

WHERE (s.navn LIKE '%$_GET[word]%') AND
(n.natio_id=s.natio_id) AND (s.klub_id=k.klub OR s.klub IS NULL)_id
Avatar billede arne_v Ekspert
31. august 2004 - 21:40 #2
Prøv:

SELECT
s.spiller_id,
s.navn,
s.udmaerkelse,
UNIX_TIMESTAMP(s.skade) AS skade,
UNIX_TIMESTAMP(s.skade2) AS skade2,
s.klub_id,
s.natio_id,
n.tekst,
k.klub_id,
k.klubnavn

FROM
(spillere as s LEFT JOIN
nationaliteter as n ON n.natio_id=s.natio_id) LEFT JOIN
klubber as k ON s.klub_id=k.klub_id

WHERE s.navn LIKE '%$_GET[word]%'
Avatar billede razmuzdk Nybegynder
01. september 2004 - 17:26 #3
jpvj -> Dit forslag virker ikke. Den går bare "kold" og timer out når jeg kører den

arne_v -> Dit virker præcist som det skal. Men ehm... må jeg ikke lige bede om en forklaring på det JOIN halløj? har læst lidt om det, men synes det er forvirrende :) Men ellers bare smid et svar så du ka få point :)

Tak
Avatar billede arne_v Ekspert
01. september 2004 - 18:12 #4
svar
Avatar billede arne_v Ekspert
01. september 2004 - 18:13 #5
LEFT JOIN betyder at man tager alle records fra venstre side selvom
der ikke er nogen matchende records i tabellen på højre side.
Avatar billede arne_v Ekspert
01. september 2004 - 18:14 #6
http://www.eksperten.dk/artikler/389 har en lille bitte smule om JOIN
Avatar billede razmuzdk Nybegynder
01. september 2004 - 20:06 #7
Doh! - klikkede på Afvis.. undskyld!! svar igen

Tak for forklaringen
Avatar billede arne_v Ekspert
01. september 2004 - 20:38 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester