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%)
-----


Niestety w dalszym ciągu najlepiej wychodzi mi moje rozwiązanie (tylko powinna być odwrotna kolejność).
Ćwiczę dalej z JOIN i UNION ale wychodzi mi cały czas nadmiar wyników....
Jasnej podpowiedzi..... czekam. To tylko pozornie jest proste (IMG:style_emoticons/default/exclamation.gif) !!

coś zapewne pomijam w myśleniu. Zrobilem coś z rożnymi JOIN(ami) ale wynik jest zawsze "do gory nogami" czyli w wyniku (i oczywiście po zawężeniu do RAZ powtarzającego się klienta) mam najstarszy wynik, czyli na pierwszy na jaki natrafi w bazie danych czesząc ją od początku do końca. Zdawalo mi się, że jak dodam kolumnę z datą dodania i określę ją wartością DESC to może coś pomóc -- ale nic z tego....

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


otrzymany rezultat znowu jest:

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


to zapewne jest proste ale właśnie to coś prostego mi nie przychodzi do glowy lub tego nie wiem....

Czy ktoś wpadnie na pomysł (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/questionmark.gif) ?
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: 10.10.2025 - 12:48