Olen tässä muutaman tovin koittanut pähkäillä seuraavaa:
Minulla on teams ja users taulut.
users taulussa on teamID arvo, joka vastaa teams taulun id arvoa.
SELECT teams.name, teams.location, teams.rank, count(users.id) FROM teams LEFT JOIN users ON users.teamID = teams.id LIMIT 20
En saa tällä kuitenkaan kuin yhden haku tuloksen minkä lisäksi count(users.id) näyttää mitä sattuu.
Ilmeisesti tuo LEFT JOIN bugaa jotenkin?
Mod. vaihtoi oikeat kooditagit!
Kyselystäsi puuttuu GROUP BY teams.id
. Ilman sitä hakusi laskee kaikki rivit samaan, jolloin COUNT antaa pelaajien kokonaismäärän ja joukkueeksi tulee satunnainen joukkue.
Pelittää, kiitos :)
Lisäys:
Mitenkäs saisin tämän toimimaan?
WHERE count(users.id)>5 antaa virhe ilmoituksen 'Invalid use of group function'
SELECT teams.name, teams.location, teams.rank, count(users.id) FROM teams LEFT JOIN users ON users.teamID = teams.id WHERE count(users.id)>5 GROUP BY teams.id LIMIT 20;
Mod. vaihtoi oikeat kooditagit!
Virhe on, että WHERE-kohdassa ei voi käyttää COUNT-funktiota tai muitakaan vastaavia ryhmittelyyn liittyviä funktioita (group function), koska WHERE koskee haettavia rivejä ennen ryhmittelyä – kuten kyselyn järjestyksestäkin voi päätellä. Tuo ehto täytyy siis laittaa vasta GROUP BY -kohdan jälkeen HAVING-sanalla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.