Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Rozbudowane zapytanie sql z left join
mlody69
post 21.10.2013, 20:53:49
Post #1





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 18.05.2009

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


Witam,
próbuję napisać zapytanie, które policzy ilość wejść czyli rekordów z tabeli sessions dla usera o jakimś ID oraz ilość subskrybcji z tabeli subs i kwote zarobioną lacznie na podstawie kolumnny cash z tabeli subs dla okreslonej daty oraz dodatkowo zeby zwrocilo nazwę kampanii z tabeli campaigns.name.
Struktura tabel: http://puu.sh/4VT2A.png

Moje aktyualne zapytanie
  1. $query = "select f.*,(select count(1) from `subs` where `uid`=f.id) as subskrypcje,(select sum(`cash`) from `subs` where `uid`=f.id) as earnings from `users` f where f.id='".user_id()."' AND (`date` > '".$datestart."' AND `date` < '".$dateend."')";

Będe wdzieczny za pomoc gdyż zależy mi na czasie.

Pozdrawiam.
Go to the top of the page
+Quote Post
mmmmmmm
post 22.10.2013, 07:13:57
Post #2





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

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


  1. SELECT f.*, s.subskrypcje, s.earnings FROM users f LEFT JOIN (SELECT uid, Count(*) subskrypcje, sum(cash) earnings FORM subs GROUP BY 1) s ON s.uid=f.id WHERE ...
Go to the top of the page
+Quote Post
mlody69
post 22.10.2013, 09:58:24
Post #3





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 18.05.2009

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


Witam,
Dziękuję za odpowiedź aczkolwiek to zapytanie nie zwraca nic mimo że w tabeli sessions są rekord.
Go to the top of the page
+Quote Post
nospor
post 22.10.2013, 10:04:27
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Rozpisz se to normalnie na dwa zapytania, kazde oddzielnie na to co chcesz i juz.
Od biedy polacz to potem przez UNION jesli chcesz wykonac tylko jedno zapytanie do bazy


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mmmmmmm
post 22.10.2013, 11:49:25
Post #5





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

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


Cytat(mlody69 @ 22.10.2013, 10:58:24 ) *
Witam,
Dziękuję za odpowiedź aczkolwiek to zapytanie nie zwraca nic mimo że w tabeli sessions są rekord.

Pokaż kod.
Go to the top of the page
+Quote Post
mlody69
post 27.10.2013, 17:32:36
Post #6





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 18.05.2009

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


  1. $query = "SELECT f.*, s.subskrypcje, s.earnings FROM users f LEFT JOIN (SELECT uid, Count(*) subskrypcje, sum(cash) earnings FROM subs GROUP BY 1) s ON s.uid=f.id where f.id='".user_id()."' AND (`date` > '".$datestart."' AND `date` < '".$dateend."')";
  2. $query = $db->query($query);
  3. $row = $db->fetchAssoc($query);
  4. print_r($row);


Jakieś pomysły?

Zastanawiam się dlaczego
zapytanie
  1. SELECT f.*,(SELECT count(1) FROM `subs` WHERE `uid`=f.id) AS subskrypcje,(SELECT sum(`cash`) FROM `subs` WHERE `uid`=f.id) AS earnings FROM `users` f WHERE f.id='".user_id()."' ORDER BY `date` DESC;

Zwraca tabelę z informacjami o userze oraz subskrybjce i zarobki a gdy dodam
  1. SELECT f.*,(SELECT count(1) FROM `subs` WHERE `uid`=f.id) AS subskrypcje,(SELECT sum(`cash`) FROM `subs` WHERE `uid`=f.id) AS earnings FROM `users` f WHERE f.id='".user_id()."' AND (`date` > '".$startdate."' AND `date` < '".$enddate."') ORDER BY `date` DESC;

to juz nie
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 4.07.2025 - 21:26