Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> DISTINCT z INNER JOIN
masif
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 29.01.2006
Skąd: Bielsko-Biała

Ostrzeżenie: (0%)
-----


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?

Ten post edytował masif 22.03.2007, 07:08:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Indeo
post
Post #2





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

Ostrzeżenie: (0%)
-----


GROUP BY nazwa_pola


a inner joiny robi się z użyciem .... from tabela1 INNER JOIN tabela2 ON tabela1.pole1=tabela2.pole2
Go to the top of the page
+Quote Post
miggie
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 12.11.2006
Skąd: Rudziniec

Ostrzeżenie: (0%)
-----


  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.
Go to the top of the page
+Quote Post
bełdzio
post
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 81
Dołączył: 6.04.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


jakby nie patrzeć to
  1. users.miasto=miasta.id
to jest "to samo" co INNER JOIN ;-)
Go to the top of the page
+Quote Post
miggie
post
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 12.11.2006
Skąd: Rudziniec

Ostrzeżenie: (0%)
-----


no tak (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Go to the top of the page
+Quote Post
Indeo
post
Post #6





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

Ostrzeżenie: (0%)
-----


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.
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.08.2025 - 02:10