Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] LEFT JOIN
miccom
post
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 (IMG:style_emoticons/default/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ł (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

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: 23.12.2025 - 20:16