Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie wielu tabel - wylosowanie wyników tylko z NULL
Forum PHP.pl > Forum > Bazy danych > MySQL
smarcz
Otóż tak. Mam klika tabel w których przechowuje różne dane dla tych samych indeksów. Czasem jednak dla niektórych nowych produktów w tabeli atrybut nie istnieje wpis. Chciałbym wylosować z pierwszej tabeli tylko te wyniki które nie istnieją w tabeli atrybut.

Przykład:

(nazwa tabeli.id, nazwa tabeli.id)
+-------------+-------------+
| produkt.id | atrybut.id |
+-------------+-------------+
| 1 | 1 |
+-------------+-------------+
| 2 | 2 |
+-------------+-------------+
| 3 | NULL | -> ten wynik chce wylosować
+-------------+-------------+
| 4 | 4 |
+-------------+-------------+
| 5 | NULL | -> ten wynik chce wylosować
+-------------+-------------+
| 6 | NULL | -> ten wynik chce wylosować


Jak powinno wyglądać prawidłowe złączenie - jak stosuje metodę z USING (id) losuje mi wszystkie wyniki dla pełnych atrybutów. Ja potrzebuje odwrotność.
Dziękuję za podpowiedzi
dmateo
Po prostu dodać:
  1. WHERE atrybut.id IS NULL
smarcz
Dodawałem ten atrybuty ale mam wewnetrzny błąd serwera. Może być przyczyną to że tabela atrybuty nie posiada indexu na wybieranej kolumnie?
mortus
A jak wygląda Twoje zapytanie? Jakiego złączenia używasz? Czyżby INNER JOIN? Jeśli tak, to dlatego właśnie zapytanie nie działa.
  1. SELECT * FROM `produkt` LEFT JOIN `atrybut` USING (`id`) WHERE `atrybut`.`id` IS NULL

Jeśli nadal będziesz miał błąd serwera, to wklej tutaj jego treść.
smarcz
Wykonuje następujące pytanie do zliczenia takich produktów, które nie posiadają atrybutów:

  1. SELECT count(*) FROM `produkt` AS tab1 LEFT JOIN atrybut AS tab2 ON (tab1.id=tab2.id) WHERE tab2.id IS NULL ORDER BY tab1.id DESC


Serwer mieli i mieli - następnie wyskakuje błąd 500 - wewnętrzny błąd serwera? Rekordów jest dość dużo zaznaczam ok - 74000 w tabeli produkt


[500] Internal Server Error : Wewnętrzny błąd serwera
dostawca hostingowy - renomowany smile.gif

Zaznaczam - że na serwerze lokalnym - WebSerwer - gdzie testuje błędu nie mam
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.