Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DISTINCT z INNER JOIN
Forum PHP.pl > Forum > Bazy danych > MySQL
masif
Mam taki oto problem z zapytaniem:

Zapytanie:
  1. <?php
  2. $result = @mysql_query("SELECT * FROM users INNER JOIN miasta WHERE users.miasto=miasta.id AND bran
    za = $idkat AND flaga = "
    widoczny" ");
  3. ?>



Wyświetla mi wszystkie miasta z danej branży itd.
Jeżeli jest w danym mieście 3 takie firmy z branżą to to zapytanie wiadomo zwróci mi 3 razy nazwę miasta.

Chce zastosować DISTINCT przed polem miasto w tabeli users żeby wyświetliło nazwę miasta tylko raz
ale wtedy zanikają mi inne dane bo robie to tak:

  1. <?php
  2. $result = @mysql_query("SELECT DISTINCT miasto FROM users INNER JOIN miasta WHERE users.miasto=mias
    ta.id AND branza = $idkat AND flaga = "
    widoczny" ");
  3. ?>

A potrzebuje pobrać nie tylko miasto ale wszystko z tej tabeli users.


Jak w tym przypadku zastosować DISTINCT?
Indeo
GROUP BY nazwa_pola


a inner joiny robi się z użyciem .... from tabela1 INNER JOIN tabela2 ON tabela1.pole1=tabela2.pole2
miggie
  1. SELECT <lista pól z users>, miasta.miasto
  2. FROM users, miasta
  3. WHERE users.miasto=miasta.id AND branza = $idkat AND flaga = "widoczny"


To powinno zadziałać. Jeżeli nie, to podaj strukturę tabel users i miasto i przykładowe dane. Tak będzie łatwiej
Wg mnie INNER JOIN w ogóle nie jest potrzebne.
bełdzio
jakby nie patrzeć to
  1. users.miasto=miasta.id
to jest "to samo" co INNER JOIN ;-)
miggie
no tak snitch.gif
Indeo
inner join'y są bardziej eleganckie (bardziej wiadomo o co chodzi w strukturze) i szybciej chodzą niż metoda wsypywania wszystkich tabel do jednego worka, a potem nakładanie filtrów, czy nawet podzapytania.
Jednak przy wybieraniu pojedynczych pozycji nie ma to większego znaczenia, natomiast przy operacjach na dużej liczbie rekordów różnice są znaczne.
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.