Zapytanie do dwóch tabel - czy tego się nie obejdzie? |
Zapytanie do dwóch tabel - czy tego się nie obejdzie? |
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 |
|
|
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 |
|
|
19.04.2002, 17:40:20
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 14.04.2002 Skąd: Łowicz Ostrzeżenie: (0%) |
dzięki za podpowiedź
|
|
|
28.04.2002, 11:58:11
Post
#4
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 27.04.2002 Skąd: Gdynia Ostrzeżenie: (0%) |
A jak rozwiązać taki problem:
Chcę pobrać z dwóch tabel dane, posortowane wg visits z limitem do 5 wyświetleń Ale żeby one się nie nakładały... -------------------- Markiz
wk.prv.pl |
|
|
29.04.2002, 07:05:14
Post
#5
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 14.04.2002 Skąd: Łowicz Ostrzeżenie: (0%) |
eliminacja duplikatów DISTINCT
limit dowolna ilość LIMIT X sortowanie SORT (ASC/DESC) |
|
|
29.04.2002, 14:01:28
Post
#6
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 27.04.2002 Skąd: Gdynia Ostrzeżenie: (0%) |
Cytat eliminacja duplikatów DISTINCT
limit dowolna ilość LIMIT X sortowanie SORT (ASC/DESC) No a powiedz mi... no bo jeżeli wpiszę: "SELECT DISTINCT id, tytul FROM wk_news" To pokaże mi bez duplikatów fakt, ale jak ja potrzebuje pobrac dane z dwoch tabel to już lipa. Próbowałem robić coś takiego: "SELECT DISTINCT id, tytul FROM wk_news, tdb_news" I jeszzce wiele innych kombinacji, szukałem też w manualach i ... :/ lipa Za pomoc dziękuję... -------------------- Markiz
wk.prv.pl |
|
|
29.04.2002, 14:13:23
Post
#7
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 14.04.2002 Skąd: Łowicz Ostrzeżenie: (0%) |
przyjzyj sie dookładnie mojemu postowi to jest select zwracający się do dwóch tabel, przestudiuj go dokładnie, wystarczy że pozamieniasz sobie dane i masz gotowca
|
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 19:48 |