Mijn vraag
Ik heb één tabel Members.
Ik haal zoals je kan zien alle members eruit met dezelfde clanid.
Maar de members hebben ook family groep. Hier moeten members toegevoegd worden die met dezelfde family groep hebben, maar mogen wel uit andere clanid's komen.
De gekozen query werkt goed, er is wel één nadeel:
In de members lijst zijn ook paar keer members opgenomen (in mijn clan dus) met dezelfde clanid.
Hierdoor pakt het daardoor opnieuw uit LEFT JOIN deel en heb ik dus dubbele rijen die ik al heb kunnen pakken. Dat is dus niet helemaal de bedoeling.
Waardoor de resultaat aantal dubbele namen heeft en veel langer is.
Alleen het is nog niet gelukt om dubbele namen eruit te halen. Ook niet met "m.id<>mm.id" ertussen want dan vallen er aantal rijen weg die wel erbij moeten.
De voorwaarden zijn simpel:
- pak allen met aangegeven clanid=1, dit werkt
- pak dan members erbij met dezelfde family uit dezelfde tabel (met behulp van kopie om ermee te vergelijken), dat doet het ook
- zorg ervoor dat er geen dubbele resultaten voorkomen omdat ze al eerder gepakt zijn (id controle), dit is nog niet goed uitgekomen
- failscan=0 uit beide kanten, werkt hier goed
Relevante software en hardware die ik gebruik.
PHP/MYSQL
Wat ik al gevonden of geprobeerd heb
Heb met INNER JOIN en LEFT JOIN gedaan, geen verbetering.
m.id<>mm.id erbij gedaan in LEFT JOIN - valt rijen weg
in WHERE gaat ook niet goed.
Extra: ik moet ook dezelfde query hebben, maar dan voor mensen buiten clanid=1 inclusief gekoppelde family groep members. Beiden zullen wel bijna identiek zijn, met als verschil clanid<>'1' in WHERE.
Waar heb ik gemist en welke JOIN methode is geschikt?
PHP:
1
2
3
4
5
6
7
8
| $sql=mysqli_query($link, "SELECT m.id,m.name,m.family,m.level, mm.id,mm.name,mm.family,mm.level FROM member m LEFT JOIN member mm ON m.family = mm.family WHERE m.clanid='1' AND m.failscan='0' AND mm.failscan='0' ORDER BY m.name ASC,mm.name ASC"); |
Ik heb één tabel Members.
Ik haal zoals je kan zien alle members eruit met dezelfde clanid.
Maar de members hebben ook family groep. Hier moeten members toegevoegd worden die met dezelfde family groep hebben, maar mogen wel uit andere clanid's komen.
De gekozen query werkt goed, er is wel één nadeel:
In de members lijst zijn ook paar keer members opgenomen (in mijn clan dus) met dezelfde clanid.
Hierdoor pakt het daardoor opnieuw uit LEFT JOIN deel en heb ik dus dubbele rijen die ik al heb kunnen pakken. Dat is dus niet helemaal de bedoeling.
Waardoor de resultaat aantal dubbele namen heeft en veel langer is.
Alleen het is nog niet gelukt om dubbele namen eruit te halen. Ook niet met "m.id<>mm.id" ertussen want dan vallen er aantal rijen weg die wel erbij moeten.
De voorwaarden zijn simpel:
- pak allen met aangegeven clanid=1, dit werkt
- pak dan members erbij met dezelfde family uit dezelfde tabel (met behulp van kopie om ermee te vergelijken), dat doet het ook
- zorg ervoor dat er geen dubbele resultaten voorkomen omdat ze al eerder gepakt zijn (id controle), dit is nog niet goed uitgekomen
- failscan=0 uit beide kanten, werkt hier goed
Relevante software en hardware die ik gebruik.
PHP/MYSQL
Wat ik al gevonden of geprobeerd heb
Heb met INNER JOIN en LEFT JOIN gedaan, geen verbetering.
m.id<>mm.id erbij gedaan in LEFT JOIN - valt rijen weg
in WHERE gaat ook niet goed.
Extra: ik moet ook dezelfde query hebben, maar dan voor mensen buiten clanid=1 inclusief gekoppelde family groep members. Beiden zullen wel bijna identiek zijn, met als verschil clanid<>'1' in WHERE.
Waar heb ik gemist en welke JOIN methode is geschikt?