Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL][MySQL]Sformułowanie zapytania mySQL
kniki
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 16.08.2012

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Czyli mam przenieść do Giełdy Ofert?

Wybacz, ale zlecenia, to nie ten dział, a do pomocy potrzebny jest Twój znaczny udział.
Go to the top of the page
+Quote Post
kniki
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 16.08.2012

Ostrzeżenie: (0%)
-----


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ę
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
kniki
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 16.08.2012

Ostrzeżenie: (0%)
-----


Dzięki wielkie, właśnie o to mi chodziło, żeby ktoś podrzucił mi takie sformułowanie, teraz już sobie powinienem poradzić.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 22:48