Autor | Zpráva | ||
---|---|---|---|
tomas2245 Profil |
Zdravím, vedel by mi niekto pomôcť s týmto kódom?
Chcel by som aby mi to spočítalo stĺpec celkova_cena pri tých zákazníkoch, ktorí majú objednávku vytvorenú od dátumu 31.05.2024 až do dátumu 06.06.2024 a zároveň aj keď sa nájde zákazník s takým dátumom a náhodou by mal objednávku ešte ďalšiu pred týmto dátumom, napr. v roku 2023 tak aby toho konkrétneho zákazníka nezarátalo do sčítania tej celkovej ceny Mám spravený tento kód ktorý funguje ale ráta mi tam aj tie objednávky z minulých rokov do toho... skúšal som aj pomocou umelej inteligencie ale nevedela mi pomôcť úplne :D Nemám na stránke registrácie kvôli jednoduchosti objednávania, čiže potrebujem aby tam bola len kontrola pomocou rovnakého mena, priezviska a mesta A túto štatistiku chcem aby som vedel koľko mi to zarobilo na reklamách z FB a IG pri nových zákaznikoch, ktorí ešte nemali objednávku na základe mena, priezviska a mesta $datumod a $datumdo je len na ukážku, reálne si dátumy mením pomocou inputov zvýraznená časť kódu bude zrejme súvisieť s tým čo potrebujem, len mi už nenapadá ako to zmeniť aby to správne rátalo bez tých objednávok pred tým dátumom ktorý si zvolím kód: $datumod = '2024-05-31'; $datumdo = '2024-06-06'; $dotaz = mysqli_query($pripoj," SELECT SUM(celkova_cena) AS celkova_cena FROM ( SELECT oz.meno, oz.priezvisko, oz.mesto, oc.celkova_cena FROM objednavky_info oi JOIN objednavky_zakaznik oz ON oi.zakaznik_id = oz.id JOIN objednavky_cena oc ON oi.id = oc.objednavka_id WHERE oi.vytvorena >= '$ostatne_reklamy_datum_od 00:00:00' AND oi.vytvorena < '$ostatne_reklamy_datum_do 23:59:59' AND (oz.odkial_ste_sa_o_nas_dozvedeli = 'facebook' OR oz.odkial_ste_sa_o_nas_dozvedeli = 'instagram') AND NOT EXISTS ( SELECT 1 FROM objednavky_info oi2 WHERE oi2.zakaznik_id = oz.id AND oi2.vytvorena < '$ostatne_reklamy_datum_od 00:00:00' ) ) AS subquery "); $dotaz2 = mysqli_fetch_assoc($dotaz); |
||
Kajman Profil |
#2 · Zasláno: 2. 6. 2024, 22:25:26
To označené zkuste zaměnit za
AND NOT EXISTS ( SELECT 1 FROM objednavky_info oi2 JOIN objednavky_zakaznik oz2 ON oi2.zakaznik_id = oz2.id WHERE oz2.meno = oz.meno AND oz2.priezvisko= oz.priezvisko AND oz2.mesto= oz.mesto AND oi2.vytvorena < '$ostatne_reklamy_datum_od 00:00:00' ) Případně by to šlo napsat nějak takto SELECT Sum(soucet_zakaznika) soucet_celkem FROM (SELECT oz.meno, oz.priezvisko, oz.mesto, Sum(oc.celkova_cena) soucet_zakaznika FROM objednavky_info oi JOIN objednavky_zakaznik oz ON oi.zakaznik_id = oz.id JOIN objednavky_cena oc ON oi.id = oc.objednavka_id WHERE oi.vytvorena <= '$ostatne_reklamy_datum_do 23:59:59' AND oz.odkial_ste_sa_o_nas_dozvedeli IN ( 'facebook', 'instagram' ) GROUP BY oz.meno, oz.priezvisko, oz.mesto HAVING Min(oi.vytvorena) >= '$ostatne_reklamy_datum_od 00:00:00') subquery V obou případech pomůže jeden vícesloupcový index např. (mesto, prizvisko, meno) nad tabulkou zákazníků. A možná do součtu nebudete chtít započítávat dopravu atp., pokud tam nemáte přirážku. |
||
tomas2245 Profil |
#3 · Zasláno: 2. 6. 2024, 22:34:25
ďakujem veľmi pekne!
už dávnejšie ste mi viac krát pomohol, ste veľký pán programátor :) použil som prvé riešenie a už mi to konečne funguje :) |
||
Časová prodleva: 1 rok
|
0