Autor | Zpráva | ||
---|---|---|---|
freeTel Profil * |
#1 · Zasláno: 19. 2. 2020, 22:27:33
Zdravím, mám dotaz na dotaz, který se mi nedaří dojít ke zdárnému výsledku.
1. tabulku urřitě rozebírat nemusím. 2. tabulka je cena klasická 3. tabulka je ceník individuální Jde mi o to aby jsem získal výsledky jen z tabulky produkty. Zkoušel jsem všechno, ale správný výsledky mi to nedává. Tak se chci zeptat zkušenějších. Děkuji $vydelek = mysqli_fetch_array($mysqli->query("SELECT SUM(ob1.pocet*ob3.cena) AS pocetnik FROM objednavky ob1 left JOIN produkty ob3 ON ob3.id = ob1.id_zbozi inner JOIN klient_cenik ob2 ON ob1.id_zbozi = ob2.id_produktu WHERE ob1.stav='C' OR ob1.stav='F'"),MYSQLI_ASSOC); |
||
Keeehi Profil |
freeTel:
Proč tam vůbec přidáváš tu třetí tabulku, když píšeš, že tě nezajímá? SELECT objednavky.id, SUM(objednavky.pocet*produkty.cena) AS pocetnik FROM objednavky LEFT JOIN produkty ON produkty.id = objednavky.id_zbozi WHERE objednavky.stav IN ('C', 'F') GROUP BY objednavky.id |
||
freeTel Profil * |
#3 · Zasláno: 19. 2. 2020, 22:45:21
Keeehi:
Chci výsledky cen jen z tabulky produkty a z tabulky klient_cenik objednávky přeskočit |
||
Keeehi Profil |
#4 · Zasláno: 19. 2. 2020, 23:08:59
freeTel:
No jasně, když tam tabulku klient_cenik nepřidáš, nemůžou se ve výsledku hodnoty z ní nijak projevit. Nicméně, celé je to takové divné. Je velmi netypické, aby objednávka měla vždy jen jednu položku. Takže by to to chtělo ukázku struktury tabulek, nejlépe i s nějakými daty. No a pak pořádně popiš, co vlastně chceš vědět. Ne ve stylu co s čím spojit (protože v tom máš evidentně zmatek) ale něco ve stylu: "Chci vědět cenu jedné konkrétní objednávky, s tím že pokud má některá položka individuální cenu, použije se ta, jinak se použije ta ceníková." Nebo: "Chci znát všechny objednávky, kde žádná z jejich položek nemá nastavenou individuální cenu." A tak podobně. |
||
freeTel Profil * |
Keeehi:
Zmatek v tom trošku už mám, ale je to v podstatě jednoduché. Tabulka produkty je jasná(id,nazev,cena,text) Tabulka klient_cenik ma vlastne jen (id klienta, id_zbozi, cena) Tabulka objednavky (id_uzivatele, id_zbozi, pocet, stav, datum) V tabulce objednávky jsou právě i objednávky s cenou z tabulky (klient_cenik). Proto je tam zahrnuta do dotazu. Jinak by to přičítalo jinou cenu a proto se snažím udělat to, aby tyhle objednávky (ceny) přeskočil. Ve výsledku tedy chci dosáhnout: Výdělek na stránce pod klasickou cenou: ---- kč Výdělek na stránce pod individuální cenou: ---- kč Teď jsem zaseklej u prvního bodu/dotazu (Výdělek na stránce pod klasickou cenou) |
||
Keeehi Profil |
Výdělek za všechny objednávky pod klasickou cenou
SELECT SUM(objednavky.pocet*produkty.cena) AS vydelek FROM objednavky JOIN produkty ON objednavky.id_zbozi = produkty.id WHERE objednavky.stav IN ('C', 'F') Výdělek za všechny objednávky pod individuální cenou SELECT SUM(objednavky.pocet*klient_cenik.cena) AS vydelek FROM objednavky JOIN klient_cenik ON objednavky.id_zbozi = klient_cenik.id_zbozi AND objednavky.id_uzivatele = klient_cenik.id_klienta WHERE objednavky.stav IN ('C', 'F') |
||
freeTel Profil * |
#7 · Zasláno: 20. 2. 2020, 01:28:53
Děkuji moc. Vyhazuje to nuly. Je pozdě a řešení je lepší hledat vyspalej. Zkusím ten kod poladit a zjistit kde je chyba, že nic nevypisuje.
|
||
freeTel Profil * |
#8 · Zasláno: 20. 2. 2020, 04:12:16
První dotaz fungovat správně nemůže. Bude mi vyhazovat vsechny ceny i ty co spadaji do individuálního. Právě s tím se peru aby v dotazu zjistil, zda objednavka nespadá pod ceník z tabulky klient_cenik. Pokud ano, tak přeskoč. Klasicky dotaz bez zahrnutí třetí tabulky bude zmatecni. Bude vyhazovat vsechny objednavky s cenou z produktu a to i ty co mají cenu z tabulky klient_cenik.
|
||
Keeehi Profil |
#9 · Zasláno: 20. 2. 2020, 09:44:19
Objednávky bez klientských cen
SELECT SUM(objednavky.pocet*produkty.cena) AS vydelek FROM objednavky JOIN produkty ON objednavky.id_zbozi = produkty.id LEFT JOIN klient_cenik ON objednavky.id_zbozi = klient_cenik.id_zbozi AND objednavky.id_uzivatele = klient_cenik.id_klienta WHERE objednavky.stav IN ('C', 'F') AND klient_cenik.id_klienta IS NULL Ty objednávky jen s klientskými cenami by měly fungovat. |
||
Časová prodleva: 4 roky
|
0