Autor | Zpráva | ||
---|---|---|---|
Stepanka Profil * |
#1 · Zasláno: 15. 1. 2009, 18:13:12
Ahoj,
prosím, pomozte někdo... Mám dvě tabulky v e-shopu: Zakaznici a Objednavky A potřebuju vypsat 10 zákazníků, kteří v e-shopu nejvíce utratili. Vypíšu tady sloupce daných tabulek, aby to bylo zřetelnější: Tabulka OBJEDNAVKY: id_objednavka, id_zakaznik, doprava, doprava_cena, celkem_bez_dph, celkem_s_dph, celkem_poplatek, celkova_cena, nazev, ic, dic, jmeno, prijmeni, email, ulice, cislo, obec, psc, zeme, ulice_dod, cislo_dod, obec_dod, psc_dod, zeme_dod, telefon, poznamka,zak_cislo, datum, stav, jazyk, web, id_dopravce, id_dopravce_stat, datum2, id_platba, platba, typ_karty, platba_hash. Tabulka ZAKAZNICI: id,uz_jm, heslo, nazev, ic, dic, jmeno, prijmeni, email, ulice, cislo, obec, psc, zeme, id_stat_fakturacni, ulice_dod, cislo_dod, obec_dod,psc_dod, zeme_dod, id_stat_dodaci, dodaci_adr_jina, telefon, poznamka, icq, platebni_lhuta, druh, datum, aktivni. A já bych potřebovala zobrazit tabulku, kde v jednotlivých sloupcích bude jméno a příjmení zákazníka, potom částka, kterou utratil a za třetí počet jeho objednávek. Můj problém je ale v tom, že pokud je ten zákazník neregistrovaný (zakaznici.uz_jm = 'bez_registrace') musím vybrat údaje (počet jeho objednávek a tržba) podle jeho e-mailu. Protože vždycky když nakoupí jako neregistrovaný, dostane nový hash ID, a že je to ten samý, jako minule poznám jen podle toho, že má stejný email. No a druhý případ je pro registrované (zakaznici.uz_jm <> 'bez_registrace'). Tam potřebuju vybrat údaje podle ID zákazníka. Protože jeho ID se nemění, ale za to on jako registrovaný si může změnit email.. Doufám, že jsem to napsala aspoň trochu srozumitelně. Dotaz, co zatím mám vypadá takto, ale nefunguje dobře: SELECT o.jmeno AS jmeno, o.prijmeni AS prijmeni, o.email AS email, count(o.id_objednavka) AS pocet_objednavek, sum(o.celkem_bez_dph) as celkem_bez_dph FROM objednavky o JOIN zakaznici z ON z.email = o.email AND z.uz_jm = 'bez_registrace' GROUP BY o.email UNION SELECT o.jmeno AS jmeno, o.prijmeni AS prijmeni, o.email AS email, count(o.id_objednavka) AS pocet_objednavek, sum(o.celkem_bez_dph) as celkem_bez_dph FROM objednavky o JOIN zakaznici z ON z.id = o.id_zakaznik AND z.uz_jm <> 'bez_registrace' GROUP BY z.id ORDER BY celkem_bez_dph DESC LIMIT 10 ") or die(err(1)); Nepomohl by mi, prosím, někdo s jeho správným sestavením? Děkuju. |
||
Stepanka Profil * |
#2 · Zasláno: 15. 1. 2009, 19:20:19
ok, asi to zní složitě, když všichni mlčíte.. zeptám se jinak...
Můžu mít v dotazu 2x GROUP BY? Potřebovala bych rozjet něco takového: SELECT o.jmeno AS jmeno, o.prijmeni AS prijmeni, o.email AS email, count(o.id_objednavka) AS pocet_objednavek, sum(o.celkem_bez_dph) as celkem_bez_dph, IF(z.uz_jm='bez_registrace', z.email, z.id) AS udaj FROM objednavky o JOIN zakaznici z ON z.id = o.id_zakaznik IF(z.uz_jm='bez_registrace', GROUP BY z.email, GROUP BY z.id) ORDER BY celkem_bez_dph DESC LIMIT 10 ale bez errorů... |
||
nightfish Profil |
#3 · Zasláno: 15. 1. 2009, 20:03:29
Stepanka
k tomu prvnímu dotazu... (SELECT ....) UNION (SELECT ...) |
||
Stepanka Profil * |
#4 · Zasláno: 15. 1. 2009, 20:22:06
nightfish
Super, díky ;-) A k druhému dotazu by rada nebyla? Existuje vůbec něco takového? |
||
Kajman_ Profil * |
#5 · Zasláno: 16. 1. 2009, 11:02:01
GROUP BY IF(z.uz_jm='bez_registrace', z.email, z.id) |
||
Stepanka Profil * |
#6 · Zasláno: 16. 1. 2009, 15:34:15
Kajman_
Přesně tohle jsem potřebovala. Děkuji mockrát! ;-) |
||
Časová prodleva: 14 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0