![]() |
![]() ![]() |
![]() |
![]()
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ę! |
|
|
![]()
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| |
|
|
![]()
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ę.
|
|
|
![]()
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 |
|
|
![]()
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... |
|
|
![]()
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| |
|
|
![]()
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!
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 1.07.2025 - 04:34 |