Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Łączenie wielu tabel - wylosowanie wyników tylko z NULL
smarcz
post 7.09.2011, 14:58:47
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

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


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

Ten post edytował smarcz 7.09.2011, 14:59:25
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
dmateo
post 7.09.2011, 19:29:03
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 3
Dołączył: 19.05.2009

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


Po prostu dodać:
  1. WHERE atrybut.id IS NULL
Go to the top of the page
+Quote Post
smarcz
post 7.09.2011, 20:29:47
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

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


Dodawałem ten atrybuty ale mam wewnetrzny błąd serwera. Może być przyczyną to że tabela atrybuty nie posiada indexu na wybieranej kolumnie?
Go to the top of the page
+Quote Post
mortus
post 7.09.2011, 20:35:09
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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ść.
Go to the top of the page
+Quote Post
smarcz
post 8.09.2011, 05:23:37
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

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


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

Ten post edytował smarcz 8.09.2011, 05:27:53
Go to the top of the page
+Quote Post

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: 13.08.2025 - 23:07