Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie do dwóch tabel - czy tego się nie obejdzie?
NortoN
post 14.04.2002, 07:32:09
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 14.04.2002
Skąd: Łowicz

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


Największy problem mam z tym iż zapytanie to pobiera prawidłowe wartości z pierwszej i z drugiej tabeli i je sumuje
w pierwszej mam bannery a w drugiej mam strefy (ZONES) na jakich bannery mogą być wyświetlane


$query = @mysql_query(
"SELECT DISTINCT
$zone_table.bannerID as bannerID,
$banner_table.waga as waga
FROM
$banner_table, $zone_table
WHERE
$banner_table.ban_kred >= 1 AND
$banner_table.rozmiar = '$rozmiar' AND
$zone_table.bannerID != '$id' AND
$zone_table.zoneID = '$idz'
");

w tym przypadku można powiedzieć że jest OK oczywiście jeszcze musiałem zastosować DISTINCT bo mi się rekordy dublowały

ALE jeżeli dokładam jeszcze inne warunki dla pierwszej tabeli np:
$banner_table.czy_banner_aktywny = 'T'
i jeszcze inne to wtedy pokazuje bannery które spełniają warunek czyli są aktywne ale również i te które nie są aktywne ponieważ należą do strefy (ZONE) bo spełniaja warunek w drugiej tablicy.

Zapytanie poprostu oddzielnie sprawdza warunki dla tabeli pierwszej i dla tabeli drugiej a jak to zrobić aby obojętnie ile podamy tabel zapytanie sprawdzało warunki dla wszystkich tabel razem a nie odzdzielnie.

Znalezłem coś takiego jak EXISTS który używa podzapytania jako warunku ale nie wiem czy można w moim przypadku tego użyć

pozdrawiam NortoN
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
carampuc
post 18.04.2002, 09:54:05
Post #2





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 15.03.2002
Skąd: Gdańśk

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


Cześć.

PO PIERWSZE :cry:
Zapytanie jakie napisałeś wybiera Ci kombinację wszystkich rekordów z tabeli 1 z wszystkimi rekordami w tabeli 2 => ilość rekordów wynikowych = ilość rekordów tabeli 1 * ilość rekordów tabeli 2. DISTINCT i warunki nieco ograniczyły efekt... Z punktu widzenia optyamlizacji - ZABÓJSTWO dla bazy danych.
Musisz jakość połączyć te dwie tabele, po jakimś polu, które będzie obecne w obu, np:
SELECT
$zone_table.bannerID as bannerID,
$banner_table.waga as waga
FROM
$banner_table, $zone_table
WHERE
$banner_table.zoneID = $zone_table.zoneID
... i dalej reszta warunków.


PO DRUGIE :wink:
Zainteresuj się SELECTEM z poleceniem LEFT JOIN

Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:21