![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Mam tabelę 'orders' w niej kolumny:
id, customer_id, date_created, commision_key commision_key to kod rabatowy. Potrzebuję jakoś elegancko wyciągnąć wszystkie zamówienia dla danego kodu rabatowego (jeden kod rabatowy jest przypisany do jednego partnera). co by wyglądało: SELECT * FROM orders WHERE commision_key='ABCDEFGH' ALE potrzebuje wynik ograniczyć tylko do zamówień do 3 miesięcy od kiedy dany KLIENT pierwszy raz użył danego kodu rabatowego, czyli powiedzmy, że customer_id=10 złożył zamówienie 10 stycznia z kodem rabatowym ABCDEFGH, potem zamówienie złożył 9 i 11 kwietnia (z tym samym kodem rabatowym), to to z 9 kwietnia się jeszcze załapie ale z 11 już nie... Da rade to ładnie zrobić za pomocą SQL? W mojej głowie siedzi niezgrabne rozwiązanie ale chyba nie będzie zbyt obciążające: pobrać pierwsze zamówienie, tzn jego datę, i użyć przy zapytaniu jako ogranicznik... |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Twoje rozwiazanie jest jak najbardziej ok.
Możesz też zrobic to w jednym zapytaniu, łączac twoje dwa zapytania, gdzie pobranie daty bazowej bedzie poprostu podzapytaniem |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MONTHS) LIMIT 0, 30' at line 12 2. Nie mam pewności czy dobrze to zrobiłem, poza błędem, ogólnie coś mi się nie podoba z tym group by customer_id... |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Interwały w liczbie pojedynczej, czyli tu MONTH.
commision_key nie jest unikalne w obrębie rekordów w tablicy orders? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Zmieniłem na MONTH, teraz error:
Unknown column 'date_c' in 'where clause' commision_key nie jest unikalne. Jest unikalne w obrębie partnerów (każdy partner ma unikalny kod). Własnie chodzi o pobranie wszystkich zamówień (a dokładniej zamówionych produktów) dla konkretnego partnera (z kodem jak w zapytaniu) ale z tym warunkiem, że do 3 miesięcy od pierwszego użycia kodu przez konkretnego klienta, inny klient jesli pierwszego zakupu z tym kodem dokonał później np 20 stycznia to liczą się wszystkie zamówienia tego klienta, z tym kodem do 20 kwietnia |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
alias date_c nie jest widoczny na poziomie WHERE, gdyż jest on generowany dopiero po dzialaniu WHERE a nie przed
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 348 Pomógł: 26 Dołączył: 8.10.2008 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Śmiga...
Dzięki. Ten post edytował Adi32 30.04.2014, 07:43:56 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 17:02 |