Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][PHP/SQL] Problem z podwójnymi wynikami w zapytaniu SQL
Forum PHP.pl > Forum > Przedszkole
oi.
Mam problem w zapytaniu, które wyświetla prawidłowo wyniki z bazy danych, ale duplikuje wyniki ze względu na branze1 i branze2 które często się pokrywają:
  1. $pytanie = "SELECT * FROM cv c, cv_kat k WHERE (c.branza1=k.id_katcv OR c.branza2=k.id_katcv)
  2. AND ( branza1='$id' OR branza2='$id' ) order by id_cv DESC LIMIT $od, $wns ";


Próbowałem
  1. DISTINCT
na różne sposoby ale żadne nie jest dobry.
Legion
Poczytaj sobie o GROUP BY a potem użyj tego z DISTINCT.
oi.
Możesz jaśniej ? Jak użyć DISTINCT by sortowało unikalne dane według id_cv z bazy CV ?
aart3k
GROUP BY id + DISTINCT?
Legion
  1. $pytanie = "SELECT DISTINCT * FROM cv c, cv_kat k WHERE (c.branza1=k.id_katcv OR c.branza2=k.id_katcv)
  2. AND ( branza1='$id' OR branza2='$id' ) GROUP BY id_cv order by id_cv DESC LIMIT $od, $wns ";


user767
tabela 1 LEFT JOIN ON tabela 2 lub RIGHT JOIN ON
oi.
DZIĘKI Legion :-) działa tak jak chciałem. User767 zapytanie
  1. tabela 1 LEFT JOIN ON tabela 2 lub RIGHT JOIN ON
będzie optymalniejsze ? Jak by wyglądało na moim przykładzie ?
user767
Nie zwraca podwójnych wyników z lewej albo prawej tabeli. Wygląda to tak, że w dalszym zapytaniu określasz WHERE i przyrównujesz jakieś pole, np id lub nazwy i id. Nie zapomnij wcześniej zadeklarować w zapytaniu tabela.nazwa_kolumny z kropką. LEFT JOIN ON działał mi dla wszystkiego, RIGHT JOIN ON dla zapytania z COUNT.

  1. $query="SELECT * FROM osoby right join logowanie on osoby.id=logowanie.id_osoba LIMIT 5 ";


  1. $query2="SELECT DISTINCT * FROM grupy left join grupy_osoby on grupy.id=grupy_osoby.grupy where grupy_osoby.osoby=$id


  1. $query="SELECT DISTINCT osoby.id, osoby.imie, osoby.nazwisko, osoby_proj.id_osoba, osoby_proj.id_projekt FROM osoby left join osoby_proj on (osoby_proj.id_osoba=osoby.id and osoby_proj.id_projekt=$id)";
oi.
Mam drugi problem w zapytaniu nie wiem jak wstawić DISTINCT by pokazywało liczbę unikalnych rekordów czyli :
  1. $query = "SELECT COUNT(*) as num FROM ...

do działającego zapytania:
  1. $pytanie = "SELECT DISTINCT * FROM cv c, cv_kat k WHERE (c.branza1=k.id_katcv OR c.branza2=k.id_katcv) AND ( branza1='$id' OR branza2='$id' ) GROUP BY id_cv order by id_cv DESC LIMIT $od, $wns ";
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.