Or is null / niet bestaand / empty in where
Ik heb een vraag over de Where in mijn query. Hij bestaat uit meerdere joins, maar er ik krijg het niet helemaal hoe ik het wil. Op het moment krijg ik alleen spelers die in de table 'team' zitten en dus aan alle criteria voldoen. Mijn vraag is: hoe krijg ik ook de spelers die geen team hebben, en dus ook geen team_jaar, plr_jaar en data hebben? Heb het geprobeerd met OR ... IS NULL maar dan werkt het niet meer.
Alvast bedankt!
Alvast bedankt!
Hoe luiden je tabeldefinities, hoe zien je joins eruit, en hoe ziet de data in je tabellen er uit (met andere woorden, geen een concreet voorbeeld van welke data je zou willen opvragen, maar wat niet lukt).
Bovenstaande informatie is onvoldoende.
Schot voor de boeg / gokje: probeer het eens met een LEFT JOIN in combinatie met IS NULL...
Bovenstaande informatie is onvoldoende.
Schot voor de boeg / gokje: probeer het eens met een LEFT JOIN in combinatie met IS NULL...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT *
FROM uitslagen AS u
JOIN speler AS s ON u.uitslag_naam = s.id
LEFT OUTER JOIN ploeglr AS plr ON s.id = plr.plr_speler
LEFT OUTER JOIN teams AS t ON plr.plr_id = t.team_id
WHERE uitslag_wedstrijd_id = '". $id ."' AND uitslag_seizoen = '". $season ."' AND uitslag_categorie = '". $cat ."' AND team_jaar = '".$jaar."' AND plr_jaar = '".$jaar."' AND '".$datum."' BETWEEN plr_begindatum AND plr_einddatum
FROM uitslagen AS u
JOIN speler AS s ON u.uitslag_naam = s.id
LEFT OUTER JOIN ploeglr AS plr ON s.id = plr.plr_speler
LEFT OUTER JOIN teams AS t ON plr.plr_id = t.team_id
WHERE uitslag_wedstrijd_id = '". $id ."' AND uitslag_seizoen = '". $season ."' AND uitslag_categorie = '". $cat ."' AND team_jaar = '".$jaar."' AND plr_jaar = '".$jaar."' AND '".$datum."' BETWEEN plr_begindatum AND plr_einddatum
Ik ben inmiddels iets verder doordat ik enkele overeenkomende kolommen bij de Join heb gezet. Nou rest me nog één probleem, waar ik niet van weet hoe ik dat op moet lossen. Ik wil namelijk nog graag het volgende toevoegen in de Where, zodat spelers de club achter hun naam krijgen die ze op dat moment ($datum) hadden.
'".$datum."' BETWEEN plr_begindatum AND plr_einddatum
Op het moment krijg ik alle rijen van jaren waarin een speler een club had. Als ik Group by id doe wordt dat er 1, maar niet altijd de goede. En als ik bovenstaande code toevoeg verlies ik weer spelers die geen club hebben, en niet voorkomen in de betreffende table.
Iemand enig idee hoe ik dit kan oplossen?
'".$datum."' BETWEEN plr_begindatum AND plr_einddatum
Op het moment krijg ik alle rijen van jaren waarin een speler een club had. Als ik Group by id doe wordt dat er 1, maar niet altijd de goede. En als ik bovenstaande code toevoeg verlies ik weer spelers die geen club hebben, en niet voorkomen in de betreffende table.
Iemand enig idee hoe ik dit kan oplossen?
Heb het opgelost. Heb een while in de while met een array of de renner een ploeg had ten tijde van de datum.




