Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Pomijanie podobnych wyników
Forum PHP.pl > Forum > Przedszkole
stefik4
Witam. W moim portalu zrobiłem panel "kto mnei obserwował". Wygląda to tak:



Jak widac podobne rekordy są wyświeltane, a ja chce , żeby było to w takiej postaci:



Chodzi, żeby pominąc te same rekordy. niestety nie wiem jak to zrobić.

Moje zapytanie wygląda tak:
  1. SELECT a.`kto`, a.`kogo`, a.`kiedy`,b.`id`, b.`username`, b.`team` FROM `kto_obserwowal` a
  2. LEFT JOIN `teams` b ON b.`id`=a.`kto`
  3. WHERE a.`kogo`='1' AND a.`kto`!='1'
  4. ORDER BY a.`kiedy` DESC
Pawel_W
google -> SQL DISTINCT
stefik4
Zrobiłem:

  1. SELECT DISTINCT a.`kto`, a.`kogo`, a.`kiedy`,b.`id`, b.`username`, b.`team` FROM `kto_obserwowal` a
  2. LEFT JOIN `teams` b ON b.`id`=a.`kto`
  3. WHERE a.`kogo`='1' AND a.`kto`!='1'
  4. ORDER BY a.`kiedy` DESC


lecz nadal to samo
tehaha
  1. SELECT a.`kto`, a.`kogo`, a.`kiedy`,b.`id`, b.`username`, b.`team` FROM `kto_obserwowal` a
  2. LEFT JOIN `teams` b ON b.`id`=a.`kto`
  3. WHERE a.`kogo`='1' AND a.`kto`!='1'
  4. ORDER BY a.`kiedy` DESC GROUP BY a.`kto`
stefik4
Mam takie zapytanie:
  1. SELECT a.`kto`, a.`kogo`, a.`kiedy`,b.`id`, b.`username`, b.`team` FROM `kto_obserwowal` a
  2. LEFT JOIN `teams` b ON b.`id`=a.`kto` WHERE a.`kogo`='1' AND a.`kto`!='1'
  3. GROUP BY a.`kto`
  4. ORDER BY a.`kiedy` DESC LIMIT 10


jest odbrze tylko zwraca mi tylko stare rekordy ;/

tehaha
spróbuj połączyć to z tym tutaj http://www.cafewebmaster.com/mysql-order-sort-group
stefik4
niezbyt wiem jak to użyć w moim przykładzie
tehaha
musisz z tym pokombinować myślę, że to będzie coś takiego:
  1. SELECT a.`kto`, a.`kogo`, a.`kiedy`,b.`id`, b.`username`, b.`team` FROM (SELECT kto, kogo, kiedy FROM kto_obserwowal ORDER BY kiedy DESC) AS temporary_table a
  2. LEFT JOIN `teams` b ON b.`id`=a.`kto`
  3. WHERE a.`kogo`='1' AND a.`kto`!='1'
  4. GROUP BY a.`kto`
stefik4
Zmieniłem to temporary_table na kto obserowowal i nic. wywala błąd

  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a LEFT JOIN `teams` b ON b.`id`=a.`kto` WHERE a.`kogo`='1' AND a.`kto`!='1' GR' at line 1


a zapytanie wyglada tak:
  1. SELECT a.`kto` , a.`kogo` , a.`kiedy` , b.`id` , b.`username` , b.`team`
  2. FROM (
  3.  
  4. SELECT *
  5. FROM `kto_obserwowal`
  6. ORDER BY `kiedy` DESC
  7. ) AS `kto_obserwowal` a
  8. LEFT JOIN `teams` b ON b.`id` = a.`kto`
  9. WHERE a.`kogo` = '1'
  10. AND a.`kto` != '1'
  11. GROUP BY a.`kto`
  12. LIMIT 0 , 30
tehaha
ciężko mi stwierdzić co tu nie gra bo musiałbym to u siebie przetestować, najlepiej gdybyś najpierw wywalił to LEFT JOIN i spróbował stworzyć maksymalnie uproszczone zapytanie z działającym sortowaniem przed grupowaniem, a potem dorzucić te LEFT JOIN, a to "AS `kto_obserwowal`" to lepiej daj inną nazwę, bo nazwanie pobranego wyniku tak samo jak tabela też może powodować jakieś błędy
stefik4
uprosilem do takiego zapytania:

  1. SELECT `kto`, `kogo`, `kiedy` FROM (SELECT * FROM `kto_obserwowal` ORDER BY `kiedy` DESC) AS `kto_obserwowal`
  2. WHERE `kogo`='1' AND `kto`!='1'
  3. GROUP BY `kto`


i dziala odbrze tylko jak dopsiuje to a po tym ' as `kto_obserwowal` ' to juz mi wywala blad ;/
tehaha
to zrób:
  1. SELECT `kto`, `kogo`, `kiedy` FROM (SELECT * FROM `kto_obserwowal` ORDER BY `kiedy` DESC) AS `a`
  2. WHERE `kogo`='1' AND `kto`!='1'
  3. GROUP BY `kto`
wywala błąd bo nie można drugi raz aliasu zrobić
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.