Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Jak z dwóch tabel wyłuskać dane z najmłodszą datą..., ... i mocno ZAWĘZIĆ wynik bez powtórzeń????
Andrzej1002
post
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.03.2010

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


Mam taki problem:

Dwie tabele w bazie danych...

tabela pierwsza "ta":

Ld--NrKlienta--Mieiac--Rok---Wartosc--
-9----22--------5-----2009----18------
-8----15--------5-----2009----15------
-7----21--------5-----2009----11------
-6----22--------5-----2009-----9------
-5----44--------5-----2009-----9------
-4----44--------5-----2009----57------
-3----22--------5-----2009----19------


tabela druga "tb":

-Ld--NrKlienta--Data----------email--
-33-----15-----2009-05-22---aaa9999@o2.pl
-33-----22-----2009-05-18---aaa8888@o2.pl
-33-----21-----2009-05-17---aaa7777@o2.pl
-33-----22-----2009-05-11---aaa6666@o2.pl
-33-----44-----2009-05-05---aaa5555@o2.pl
-33-----22-----2009-05-01---aaa4444@o2.pl
-33-----15-----2009-04-27---aaa3333@o2.pl
-33-----22-----2009-04-22---aaa2222@o2.pl
-33-----22-----2009-04-15---aaa1111@o2.pl

Chciałbym otrzymać TYLKO jeden, NAJŚWIEŻSZY email dla danego klienta czyli wynik z powyższych tabel powinien wyglądać tak

Rezultat:

Klient email
15 -- aaa9999@o2.pl
22 -- aaa8888@o2.pl
21 -- aaa7777@o2.pl
44 -- aaa5555@o2.pl


Próbowałem różnych zapytań ale zawsze dostaję za dużo odpowiedzi czyli albo namnożą mi się Klienci albo wyciąga więcej emaili. Klienci często zmieniają swe eMaile a ważny jest tylko jeden - ten z najświeższą datą...


  1. $wynik = mysql_query ("SELECT DISTINCT ta.NrKlienta, ta.Miesiac, ta.Rok, tb.NrKlienta, tb.email tb.data FROM ta tb WHERE ta.NrKlienta = tb.NrKlienta AND ta.Miesiac = '$month' AND tbRok ='$year' AND tb.email (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ;")


Jeżeli ktoś podpowie mi prosty SELECT to będzie super...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Andrzej1002
post
Post #2





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 12.03.2010

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


Nie mogę sobie z tym poradzić. Niestety chyba zbyt komplikuję zapytanie z JOIN bo ciągle mam błędy... lub zbyt dużo wyników.

Dokończyłem zapytanie to od którego zacząłem czyli:

  1. $wynik = mysql_query ("SELECT DISTINCT ta.NrKlienta, ta.Miesiac, ta.Rok, tb.NrKlienta, tb.email, tb.data FROM ta tb WHERE ta.NrKlienta = tb.NrKlienta AND ta.Miesiac = '$month' AND tb.Rok ='$year' GROUP BY (tb.email) or
  2. die ("błąd w pytaniu");


i działa idealnie ALE wybiera mi najstarsze eMaile zamiast najmlodszych...

15 -- aaa9999@o2.pl
22 -- aaa1111@o2.pl <----- a powinno być aaa8888@o2.pl
21 -- aaa7777@o2.pl
44 -- aaa5555@o2.pl

pozostałe eMaile byly wpisane tylko raz więc będą zawsze wybrane dobrze.


Chyba faktycznie nie jest to bardzo trudne ale tak się zablokowalem w tym zestawieniu że nie potrafię obiektywnie na to popatrzeć...

Proszę o pomoc.

trochę źle zacytowałem moje szukanie. "Prawie poprawnie" jest [źle zacytowalem: GROUP BY (tb.NrKlienta)]:

  1. $wynik = mysql_query ("SELECT DISTINCT ta.NrKlienta, ta.Miesiac, ta.Rok, tb.NrKlienta, tb.email, tb.data FROM ta tb WHERE ta.NrKlienta = tb.NrKlienta AND ta.Miesiac = '$month' AND tb.Rok ='$year' GROUP BY (tb.NrKlienta) ; ") or
  2. die ("błąd w pytaniu");


i działa idealnie ALE wybiera mi najstarsze eMaile zamiast najmlodszych...

15 -- aaa9999@o2.pl
22 -- aaa1111@o2.pl <----- a powinno być aaa8888@o2.pl
21 -- aaa7777@o2.pl
44 -- aaa5555@o2.pl

pozostałe eMaile byly wpisane tylko raz więc będą zawsze wybrane dobrze.

Polecenie wykonane wg rady Pilsner'a coś mi źle działa (nie wiem co to jest: USING).

Jeżeli TO jest proste to niech Ktoś mądry napisze mi jak to skonstruować... Może z tym JOIN(em) ale z tym sobie nie radzę.
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 00:20