Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][MySQL]Sformułowanie zapytania mySQL
Forum PHP.pl > Forum > Przedszkole
kniki
Witam,
Na początek aby uniknąć komentarzy typu "szukaj w google" albo "szukanie nie boli" uprzedzam, ze jestem zielony w mysql i nie wiąże żadnej przyszłości z programowaniem itp. Potrzebuję natomiast zbudowania jednego zapytania, które dla zaawansowanych użytkowników nie powinno być żadnym problemem, a mi jego sklecenie zajmie pewnie ze 2 tygodnie.

Do sedna..

Potrzebuję uzyskać listę mailową klientów którzy:
1. Są zarejestrowani w sklepie dłużej niż miesiąc i nie złożyli nigdy żadnego zamówienia
2. Są klientami starszymi i kiedyś składali zamówienia, jednak ostatnie ich zamówienie zostało złożone dłużej niż 6 miesięcy temu (ten okres ma być z możliwością ustalenia)

Dane potrzebne do uzyskania odpowiedzi na takie zapytanie znajdują się w dwóch tabelach:

1. ps_orders - zawierająca kolumny: id_order (w postaci liczby) , id_customer (w postaci liczby) , date_add (w postaci: rrrr-mm-dd hh:mm:ss)
2. ps_customer - zawierająca kolumny: id_customer, note (dowolny ciąg znaków, domyslnie NULL), email, active (wartość 0 lub 1), deleted (wartość 0 lub1), date_add (postać j.w.)

Gdzie:
Tabele można powiązać poprzez id_customer
Interesują nas klienci u których pole note ma wartość NULL, active ma wartość 1, deleted ma wartość 0,

date_add w ps_orders oznacza datę złożenia zamówienia
date_add w ps_customer oznacza datę rejestracji konta.

Ostatecznie marzy mi się aby wyświetlała mi się jedna tabela która będzie zawierać listę mailingowa tak jak wyżej napisałem

Tyle udało mi się zrozumieć jednak sformułowanie sensownego zapytania przerasta moją wiedzę i możliwości czasu który mogę poświecić na metodę prób i błędów.

Będę bardzo wdzięczny jeżeli któraś z osób znających się na rzeczy będzie w stanie poświęcić chwilę na podanie mi przykładowego gotowca.
Z góry dziękuję za wszelką pomoc

erix
Czyli mam przenieść do Giełdy Ofert?

Wybacz, ale zlecenia, to nie ten dział, a do pomocy potrzebny jest Twój znaczny udział.
kniki
Zależy w jakiej formie ma być to udział bo oczywiście nie zakładam że ktoś będzie za mnie testował kod i szukał odpowiednich powiązań itd. Chodzi mi o przykładowy kod przygotowany dla tego zadania, który już będę w stanie zrozumieć i zedytować.. po prostu szukanie kilku potrzebnych funkcji spośród setek istniejących jest dosyć mozolne i wykracza po za moją wiedzę
mmmmmmm
W tych zapytaniach nie musisz użyć ANI JEDNEJ FUNKCJI.

1.
  1. SELECT c.id_customer FROM ps_customer c LEFT JOIN ps_order o ON c.id_customer=o.id_customer WHERE c.date_add<'2012-07-16' GROUP BY 1 HAVING Min(o.date_add) IS NULL

2. podobnie
kniki
Dzięki wielkie, właśnie o to mi chodziło, żeby ktoś podrzucił mi takie sformułowanie, teraz już sobie powinienem poradzić.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.