Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] LEFT JOIN
miccom
post 29.03.2021, 21:36:54
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 8
Dołączył: 7.07.2007
Skąd: Tychy

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


Cześć.

Jeśli wykonam takie zapytanie


  1. $em = $this->getDoctrine()->getManager();
  2. $conn3 = $em->getConnection();
  3. $sql3 = '
  4. SELECT
  5. `u`.`id`, `u`.`username`, `u`.`line_int`,
  6. AVG(`g`.`line_int`) AS `avg_line`
  7. FROM
  8. `user` AS `u`
  9. LEFT JOIN
  10. `grille` AS `g` ON `u`.`id` = `g`.`user_id`
  11. WHERE
  12. `u`.`is_verified` = 1
  13. ORDER BY
  14. `u`.`line_int` DESC';
  15. $stmt3 = $conn3->prepare($sql3);
  16. $stmt3->execute();


to wyciąga mi tylko dane jednego użytkownika.. a w bazie mam dwóch spełniających te kryteria.


Jak wykonam takie zapytanie:

  1. $topGamers = $em->getRepository(User::class)
  2. ->findBy(
  3. [
  4. 'is_verified' => 1
  5. ],
  6. [
  7. 'line_int' => 'DESC'
  8. ]
  9. );


to wyciąga mi z bazy dwóch użytkowników sad.gif


Co robię źle?


Obszedłem nieco na okrągło i wyciągam dane takim zapytaniem:

  1. SELECT `u`.`id` , `u`.`username` , `u`.`line_int` , COUNT( `g`.`id` ) AS `ile`
  2. FROM `user` AS `u`
  3. LEFT JOIN `grille` AS `g` ON `u`.`id` = `g`.`user_id`
  4. WHERE `u`.`is_verified` =1
  5. GROUP BY `u`.`username`
  6. ORDER BY `u`.`line_int` DESC


a potem w twig dzielę line_int przez ile

  1. średnia na grę: <strong>{{ (sGamer.line_int /sGamer.ile)|round }}


ale mam świadomość że to niepoprawne rozwiązanie, tzn. jak cos działa to jest oki, ale chciałbym aby mysql mi to przeliczył wink.gif


--------------------
Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU!
Go to the top of the page
+Quote Post
nospor
post 30.03.2021, 09:13:01
Post #2





Grupa: Moderatorzy
Postów: 36 447
Pomógł: 6292
Dołączył: 27.12.2004




Problem z pierwszym zapytaniem byl taki, ze dales funkcje grupujaca AVG, ale nie dales GROUP BY, wiec logiczne ze zwraca ci jeden rekord wink.gif


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

"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

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: 19.04.2024 - 23:36