29. november 2002 - 14:43Der er
8 kommentarer og 1 løsning
group giver en sql fejl
Hi alle Jeg sidder og sysler med en postgreSQL-database, men jeg kan ikke få den til at group'e (fungerer tilsyneladende ikke som mysql) min query er: SELECT accounts.id,contact_info.name,contact_info.last_name,contact_info.company,contact_info.address1,contact_info.address2,contact_info.city,contact_info.state,contact_info.postal_code,contact_info.country,bill.id,bill.start_balance,bill.end_balance,bill.amount FROM accounts,contact_info,bill WHERE bill.account_id=accounts.id AND contact_info.id=accounts.ci_id AND accounts.bi_id > 0 AND accounts.failed=NULL GROUP BY accounts.id, ORDER BY accounts.id
men den giver flg. fejl besked: query failed: ERROR: Attribute contact_info.name must be GROUPed or used in an aggregate function
fjerner jeg group'en virker det, men ikke grupperet..
Når du laver en group by på en attribut som accounts.id så "samler" den jo alle poster med samme id. Derfor kan den ikke vide hvilken værdi den skal tage for de andre felter, der jo kan være forskellige.
Med nu står der "id" - så er det sikkert en nøgle, og så mener du garanteret ikke GROUP BY.
Og PS: Ja, du har ret. Mysql er anderledes har du fx
felta feltb 1 Erik 2 Kurt
og siger
select felta,feltb from tabellen group by felta
så får du enten
1 Erik
eller
1 Kurt
men du kan principielt ikke vide hvilken, og dermed er det egentlig en skør forespørgsel. Er du interesseret i bare én af dem, ligegyldigt hvilken, kan du
select felta,max(feltb) from tabellen group by felta
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.