LINUX.ORG.RU

вложенные запросы - mysql


0

0

есть 2 таблицы 
CREATE TABLE logs (
    `Id`                int(7) NOT NULL auto_increment,
    `name`              varchar(16),
    `dTime` TIMESTAMP,
    PRIMARY KEY  (`Id`)
);
CREATE TABLE struc(
        `name`            char(16),
        `tId`           int(3),
        `dTime`        TIMESTAMP
);
как запросить из таблицы logs все записи для которых запрос 
SELECT `tId` 
  FROM `struc` WHERE `name` = $NAME AND
     YEAR(`dTime`) =  YEAR($DATE) AND
       DAYOFYEAR(`dTime`) = DAYOFYEAR($DATE)
нечего бы не возврашал ?
я пробывал конструкции типа
SELECT `Id`,`name`
   FROM `logs` 
    WHERE  (SELECT `tId` 
             FROM `struc` WHERE `name` = logs.name AND
                YEAR(`dTime`) =  YEAR(logs.dTime) AND
                 DAYOFYEAR(`dTime`) = DAYOFYEAR(logs.dTime)
            ) = NULL
но он нечего не выводит.
anonymous

PS: сори за 2 пост, мое первое сообшение почему-то неотображалось какое-то время.

anonymous
()

вдумайся в свой запрос. бред полный :)... это я про (select...) = NULL

use JOIN, Luke! :^)

Deleted
()
Ответ на: комментарий от Deleted

ну не = NULL, кароче имел в виду что то что = NULL нехрена не возврашает.

anonymous
()

Во первых не = NULL, а is NULL, а во вторых я бы за использование в mysql вложенных запросов - расстреливал бы без суда и следствия. Повальное использование вложенных подзапросов даже там, где все элементарно через JOIN делается это мода такая пошла что ли?

r_asian ★☆☆
()
Ответ на: комментарий от theserg

Ага, давай ещё парочку триггеров туда повесим....и запрос включим в состав транзакции.

r_asian ★☆☆
()

> как запросить из таблицы logs все записи для которых запрос SELECT ... нечего бы не возврашал ?


Курим SQL, понимаем что надо NOT EXISTS:


SELECT `Id`,`name` FROM `logs` 
WHERE NOT EXISTS (SELECT `tId` 
              FROM `struc` WHERE `name` = logs.name AND
                YEAR(`dTime`) =  YEAR(logs.dTime) AND
                DAYOFYEAR(`dTime`) = DAYOFYEAR(logs.dTime)
            )

gods-little-toy ★★★
()
Ответ на: комментарий от theserg

> сделай хранимую процедуру и не парься

Лучше не надо. Даже если угадаешь и будешь симулировать хороший query plan, будет тормозить.

gods-little-toy ★★★
()
Ответ на: комментарий от gods-little-toy

ты, наверное, этот (квери) план и куришь, раз у тебя хранимые процедуры тормозят сильнее вложенных запросов

friday ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.