Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: union all i group by
Forum PHP.pl > Forum > PHP
masterbx2
mam 2 zapytania do bazy ktore lacze UNION ALL. z obydwu dostaje wyniki z tej samej kolumny. w tym przypadku user_id. chialbym teraz zkozystac z group by user_id aby wyniki sie nie powtarzaly. Jezeli jednak dodaje do zapytania SELECT x FROm ($zapytanie) GROUP BY x wyskakuje blad. jak to rozwiazac?


  1.  
  2. $both = "
  3. SELECT user_id FROM
  4. (
  5.  
  6. SELECT user_id FROM pm AS a2 INNER JOIN users AS b2 ON a2.pm_from = b2.user_id
  7. WHERE a2.pm_to = '$user_id' AND a2.pm_del_to = '0'
  8. UNION ALL
  9. SELECT user_id FROM pm AS a INNER JOIN users AS b ON a.pm_to = b.user_id
  10. WHERE a.pm_from = '$user_id' AND a.pm_del_from = '0'
  11. ) GROUP BY user_id";
  12.  
  13. $wynik = mysql_query($both);
  14.  
  15.  
  16. while($row = mysql_fetch_array($wynik))
  17. {
  18. echo$row['user_id'];
  19. }
  20.  


phpion
Zamiast UNION ALL daj samo UNION. Żadne grupowanie czy DISTINCT nie będzie wówczas potrzebne.
thek
Spróbuj całości nadać alias i dopiero sie baw, czyli końcówka mogła by wygladac tak:
  1. ...) AS together GROUP BY together.user_id


EDIT: Oczywiście jeśli faktycznie potrzebujesz WSZYSTKICH wyników, bo domyślnie UNION ALL bierze wszystkie, a UNION usuwa duble. Zależy więc co chcesz osiągnąć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.