![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam problem z dosyć złożonym zapytaniem SQL. Posiadam 3 tabele:
Gdzie: lg_campaigns - Kampanie reklamowe lg_campaigns_geo_targets - Dostępne kraje dla danej kampanii reklamowej lg_campaigns_views - Odsłony dla danego kraju z danej kampanii reklamowej Chcę pobrać: Kampanię reklamową (lg_campaigns) (Tylko 1 - LIMIT 1) Gdzie: lg_campaigns.status = 1 (Aktywna kampania) lg_campaigns_geo_targets.country_id = X (Kraj użytkownika który wyświetla reklame) Jeżeli lg_campaigns_geo_targets.daily_budget > 0 (Kampania posiada dziennie ograniczenie budżetu do wydania) - Pobierana jest suma wydanych dzisiaj środków (lg_campaigns_views.bid) dla danego kraju kampanii (lg_campaigns_geo_targets) Jeżeli ruch dla danego kraju kampanii jest unikalny (lg_campaigns_geo_targets.unique = 1) wtedy: - Pobierana jest suma dzisiejszych wyświetleń (lg_campaigns_views) dla danego IP (lg_campaigns_views.ip) (Suma musi być = 0 - tzn. dzisiaj żaden użytkownik z tym IP nie wyświetlił tej reklamy). - Sortowanie malejąco według lg_campaigns_geo_targets.max_bid (Czyli ta kampania która ma największą ofertę zostaje pobrana) Problem tkwi głównie w tym:
Nie wiem jak połączyć pobieranie sumy wydanych środków skoro nie wiem jeszcze jaką kampanie skrypt wybierze.. Ma ktoś pomysł jak to zrobić 1 zapytaniem? ![]() Takie zapytanie też nie chce działać:
Błąd: Unknown column 'today_spend_budget' in 'where clause' Czemu tak jest skoro zaznaczyłem `today_spend_budget` jako sumę wszystkich ofert (bid) (Pomijając już datę). PS. nie mogłem modyfikować posta ze względu na jakiś błąd z takiem SQL. (Podmieniło czysty tekst na HTML przy kolorowaniu składni). Ten post edytował markuz 25.03.2014, 09:49:25 -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
W klauzuli WHERE nie masz dostępu do kolumny today_spend_budget. Musisz przenieść ten warunek do klauzuli HAVING.
Do poczytania: 1. http://stackoverflow.com/questions/2905292/where-vs-having 2. http://dev.mysql.com/doc/refman/5.0/en/gro...extensions.html 3. https://dev.mysql.com/doc/refman/5.0/en/select.html - fragmenty dot. HAVING |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
WTF??
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 240 Pomógł: 278 Dołączył: 11.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za podpowiedź. Skleiłem coś takiego, wydaje mi się, że działa. Jednak mam jeszcze za mało danych w tabelach aby poprawnie to zapytanie przetestować. Gdyby ktoś chciał się podzielić opinia na temat powyższego zapytania chętnie jej wysłucham ![]() -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 12.06.2025 - 18:18 |