Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 23. 11. 2006, 10:49:17
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 |
#2 · Zasláno: 23. 11. 2006, 11:40:34
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 * |
#3 · Zasláno: 23. 11. 2006, 12:14:59
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 |
#4 · Zasláno: 23. 11. 2006, 12:19:54
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 * |
#5 · Zasláno: 23. 11. 2006, 12:24:23
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 |
#6 · Zasláno: 23. 11. 2006, 13:41:51
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
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0