zdublowane wiersze o tej samej wartości

0

Witam, mam takie zapytanie :

$query = "SELECT * FROM (SELECT SUM(points),SUM(money),id,date from points WHERE points.date >= :startdate AND points.date <= :enddate AND id=:id GROUP BY date) t1 INNER JOIN (SELECT total_visits,id from traffic_details WHERE traffic_details.date >= :startdate AND traffic_details.date <= :enddate AND id=:id GROUP BY date) t2 ON t1.id=t2.id GROUP BY date ORDER BY date DESC";

tabela points

id | points | money | date
jas | 4 | 1,5 | 2016-09-03
jas | 4 | 1,5 | 2016-09-03
jas | 5 | 1,5 | 2016-09-04
jas | 7 | 1,5 | 2016-09-05
jas | 7 | 1,5 | 2016-09-05
jas | 7 | 1,5 | 2016-09-05
jas | 2 | 1,5 | 2016-09-06
jas | 1 | 1,5 | 2016-09-07

tabela traffic_details

id | total_visits | date

jas | 30 | 2016-09-06
jas | 20 | 2016-09-05

wynik zapytania :

Date	    |     Total Visits | Points  |  Money
2016-09-07	   30	   1	1,5
2016-09-06	   30	   2	1,5
2016-09-05	   30	   21	4,5
2016-09-04	   30	   5	1,5
2016-09-03	   30	   48	3

i wszystko wyswietla prawidlowo oprocz Total Visits, nie wiem dlaczego ale zawsze daje wynik pierwszego wiersza z tabeli traffic_details czyli 30.. i pytanie jak to poprawic aby wyswietlalo poprawnie total_visits, czyli przykladowo jesli wiersz z dnia 3 wrzesnia nie istnieje to dawalo wynik 0 dla total_visits, jesli istnieje to prawidlowy wynik itd

0

Skoro wszystkie ID masz takie same to co Ci ma zwrócić ... ID ma to do siebie, że powinny to być unikalne więc albo złączenie zrób po innym polu albo zmień ID na unique

0
SELECT t1.date, isnull(t2.total_visits, 0) total_visits, t1.points, t1.money FROM (SELECT SUM(points) points,SUM(money) money,id,date from points WHERE points.date >= :startdate AND points.date <= :enddate AND id=:id GROUP BY id,date) t1 left JOIN (SELECT sum(total_visits) total_visits,id, date from traffic_details WHERE traffic_details.date >= :startdate AND traffic_details.date <= :enddate AND id=:id GROUP BY id, date) t2 ON t1.id=t2.id and t1.date=t2.date ORDER BY date DESC 

Edit: dodałem isnull

0
woolfik napisał(a):

Skoro wszystkie ID masz takie same to co Ci ma zwrócić ... ID ma to do siebie, że powinny to być unikalne więc albo złączenie zrób po innym polu albo zmień ID na unique

jesli wiersz w tabeli traffic_details z datą 2016-09-03,2016-09-04 itd nie istnieje to ma zwrócić total_views "0", jesli istnieje to ma zwrocic prawidłową wartość total_views.

0

to było pytanie retoryczne. rozwiązanie masz wyżej

1 użytkowników online, w tym zalogowanych: 0, gości: 1