Autor Zpráva
Anonymní
Profil *
Ahoj,

prosim, jak by mel znit sql dotaz pro databazi MySQL (pouzivam 4.0), kdyz mam tyto tabulky:

tabulka klient
id (int)
jmeno (varchar)

tabulka snizeni_ceny
id (int)
klient_id (int)
cena (int)

Kazdy klient je v tabulce klient jen jednou. Kazdy klient muze mit v tabulce snizeni_ceny vice zaznamu. Take tam nemusi mit ani jeden zaznam. Jak vytvorit dotaz, kdyz chci zjistit pro jmeno KAZDEHO klienta maximalni cenu v tabulce snizeni_ceny a chci to seradit podle teto maximalni ceny sestupne? Chtel bych to i pro klienty, kteri zadny zaznam v tabulce snizeni_ceny nemaji.

Diky moc za radu.

Dan
djlj
Profil
SELECT klient.jmeno, MAX(snizeni_ceny.cena) AS cena FROM klient LEFT JOIN snizeni_ceny ON snizeni_ceny.klient_id=klient.id GROUP BY klient.id ORDER BY cena DESC
Anonymní
Profil *
Diky, to funguje, ale jak jeste udelat to, aby tam byli VSICHNI klienti? Ted tam jsou jen ti, kteri maji zaznam v tabulce snizeni_ceny, ja bych rad, aby tam ti ostatni byli s nulou pod nimi, pripadne s prazdnou hodnotou ...

Diky moc
djlj
Profil
No, teď by to mělo být tak, že tam budou všichni. Kdyby tam bylo INNER JOIN, tak by tam byli jen ti se záznamem v druhé tabulce.
Anonymní
Profil *
Aha, omlouvam se, v tom pripade jsem asi nezadal vsechny potrebne udaje:

V te tabulce snizeni_ceny je jeste pole polozka_id (int)

Ja do toho tveho dotazu potrebuji jeste zakomponovat neco ve smyslu where snizeni_ceny.polozka_id=15

Diky moc a omlouvam se, myslel jsem, ze zakomponovani totoho uz zvladnu.
djlj
Profil
SELECT klient.jmeno, MAX(snizeni_ceny.cena) AS cena FROM klient LEFT JOIN snizeni_ceny ON snizeni_ceny.klient_id=klient.id AND snizeni_ceny.polozka_id=15 GROUP BY klient.id ORDER BY cena DESC
Toto téma je uzamčeno. Odpověď nelze zaslat.