Problem z zapytaniem SQL

0

Mam nastepujące zapytanie SQL:

SELECT t.vat, t.name, t.city
FROM reports as t
WHERE t.vat NOT IN (SELECT hn.vat FROM handlowiecvat AS hn WHERE hn.id=5)

W obu tabelach pola vat są typu varchar(10) w tabeli reports pole vat jest kluczem głównym.
Sprawdzałem w dokumentacji MySQL http://dev.mysql.com/doc/refman/4.1/en/subqueries.html i z tego co widze to moje zapytanie jest dobrze skonstruowane jednak baza danych zwraca błąd:

SELECT t.vat, t.name, t.city FROM reports as t
WHERE t.vat NOT IN (SELECT hn.vat FROM handlowiecvat AS hn WHERE hn.id=5)
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT hn.vat FROM handlowiecvat AS hn WHERE hn.id=5)' at line

Co jest powodem pojawiania się tego błędu? Jak go naprawic?
Serwer to MySQL 4.0.13-nt

0

Stworzyłem sobie przykładowe tabele pod Twoje query:

CREATE TABLE `handlowiecvat` (
  `id` varchar(100) NOT NULL default '',
  `vat` varchar(100) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

CREATE TABLE `reports` (
  `vat` varchar(100) NOT NULL default '',
  `name` varchar(100) NOT NULL default '',
  `city` varchar(100) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

... zapytanie działa.

Podejrzewam, że wersja MySQL 4.0.13-nt nie obsługuje IN.

0

IN na pewno obsługuje ponieważ kiedy wpisze cos takiego IN(1,2,5,10) to zapytanie działa poprawnie.
Być moze problem pojawia sie kiedy w IN znajduje sie SELECT jak w tym przypadku.

Zainstalował bym chętnie wersje 5, jednak z wersją MySQL5 mam problem przy współpracy z aplikacjami które napisałem w delphi. Jaką wersję 4.xx (tak żebym nie musiał zmieniać sterowników w delphi) mam zainstalować zeby to zadziałało?

0

O ile pamietam dopiero od 4.1 weszly podzapytania - czyli m.in. in (select ...)

0

4.0 nie ma podzapytań

0

Wszystko jasne. Musze zainstalowac nowszą wersję bazy danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1