Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> select z tabeli gdzie id_x != 9 a wszystkie inne to null
blob
post 24.05.2004, 15:15:23
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2004
Skąd: Wawa

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


Witam,
Nadszedł moment, że trzeba zapytać o radę..
Mam następujący problem:
Ponieważ mój Mysql nie obsługuje podzapytań, tworzę sobie tabelę tymczasową 'tmp', która jest wynikiem działania LEFT JOINa na tabelach "towar" i "dostawcy".
Taka tabela ma pola(np.): id_towaru, nazwa_towaru, id_dostawcy.
Tam, gdzie nie było dostawcy, pole id_dostawcy jest NULL i jest OK.
Teraz chcę wyświetlić tylko ten towar, który NIE jest przypisany do mojego dostawcy(uzytkownika o id=9), czyli [sql:1:f6d014acd1] select * from tmp where id_dostawcy !=9[/sql:1:f6d014acd1]
Zakładam że wszystkie inne rekordy w tym polu są NULL, w rezultacie zapytanie jest wykonywane, ale nie dostaję żadnych wyników...
Moje pytanie: jak wyciągnąć z bazy tylko te rekordy, które w określonym polu mają wartość NULL?
Z góry dziękuję!
Go to the top of the page
+Quote Post
Aiker
post 24.05.2004, 15:41:01
Post #2





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 9.09.2003
Skąd: K-ce

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


[sql:1:58625aecee]select *
FROM tmp
WHERE id_dostawcy = NULL[/sql:1:58625aecee]

Moze tak??


--------------------
GG: 4985254 ICQ: 349-850-679
Warsztat : Apache 2|MySQL 5|php 5.1|
Go to the top of the page
+Quote Post
blob
post 24.05.2004, 15:44:41
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2004
Skąd: Wawa

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


No właśnie nie działa.. tzn. zapytanie jest wykonane poprawnie, ale nie dostaję żadnych wyników. Na moje też powinno działać, w sumie to pewnie jakaś drobnostka, ale zaciąłem się.
Go to the top of the page
+Quote Post
blob
post 24.05.2004, 15:47:08
Post #4





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2004
Skąd: Wawa

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


Rezultat SQL
Host: localhost
Baza danych : b125
Czas wygenerowania: 24 Maj 2004, 16:45
Wygenerowany przez: phpMyAdmin 2.5.6 / MySQL 4.0.1-alpha-nt
zapytanie SQL: EXPLAIN SELECT * FROM tmp WHERE id_sklepu = NULL ;
Rekordów: 1

table type possible_keys key key_len ref rows Extra
tmp ALL NULL NULL NULL NULL 10000 where used
Go to the top of the page
+Quote Post
blob
post 24.05.2004, 16:08:47
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2004
Skąd: Wawa

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


Napiszę w skrócie jak to miało wyglądać:

Zasadnicze tabele: produkty, dostawcy, ceny.

Tabela "ceny" ma łączyć dwie poprzednie i ma pola: id_ceny, id_produkt, id_dostawcy, cena.

Jestem zainteresowany wyświetleniem tych produktów, które nie są przypisane do usera(dostawcy).

Idealne zapytanie:
[sql:1:4f5ee00530] SELECT * FROM produkty WHERE id_produktu = 'SELECT id_produktu FROM ceny WHERE id_dostawcy !=9' [/sql:1:4f5ee00530]

Jak już wcześniej napisałem moja wersja MySQLa nie obsługuje podzapytań, więc muszę jakoś rozwiązać tem problem.
Wykombinowałem tabele tymczasową:

[sql:1:4f5ee00530]
CREATE TABLE IF NOT EXISTS tmp (
id_produktu int(11) NOT NULL auto_increment,
nazwa varchar(30) NOT NULL default '',
opis varchar(255) NOT NULL default '',
producent varchar(20) NOT NULL default '',
id_produkt int(11)
id_dostawcy int(11) default '0',
cena double default NULL,
detale varchar(255) default NULL,
PRIMARY KEY (id_sprzetu)
);INSERT INTO tmp SELECT * FROM produkty AS a LEFT JOIN ceny AS b ON (a.id_produktu = b.id_produkt AND b.id_dostawcy =

$userid); [/sql:1:4f5ee00530]


Zakładając że w w tabeli "ceny" mam tylko jednego dostawcę o id=9, do którego są przypisane jakieś produkty(np.10szt),
to w tabeli "tmp" będą w pełni wypełnione tylko niektóre rekordy, a pozostałe w polach od id_produkt będą miały NULL
I o te rekordy właśnie mi chodzi...
Być może od samego początku jest źle, lub jest łatwiejszy sposób..
Jak macie jakieś lepsze rozwiązania to będę dźwięczny...
Go to the top of the page
+Quote Post
Aiker
post 24.05.2004, 16:49:15
Post #6





Grupa: Zarejestrowani
Postów: 63
Pomógł: 0
Dołączył: 9.09.2003
Skąd: K-ce

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


[sql:1:4036f6fe99]select *
FROM tmp
WHERE id_dostawcy is NULL[/sql:1:4036f6fe99]
Tak powinno zadzialac


--------------------
GG: 4985254 ICQ: 349-850-679
Warsztat : Apache 2|MySQL 5|php 5.1|
Go to the top of the page
+Quote Post
blob
post 24.05.2004, 16:53:52
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 24.05.2004
Skąd: Wawa

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


Sorry za zajmowanie miejsca na forum... proszę moderatora o usunięcie tego tematu, bo się spalę ze wstydu... BTW dzieki!
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: 1.07.2025 - 04:34