Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2014, 20:02   #1
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию Выборка в одной таблице отсутствующих значений в другой

Что не так с запросом?
Код:
SELECT `k-t_s`.* FROM `k-t_s`
join `k-ts` on `k-t_s`.`id_s` = `k-ts`.`ids`
WHERE `k-ts`.`ids` IS NULL
Он ничего не возвращает, хотя, если прямыми селектами проверять, то `k-ts`.`ids`=81680 не существует, а `k-t_s`.`id_s`=81680 дохрена.
Помогите сняться с ручника.
Andrej_K вне форума Ответить с цитированием
Старый 02.11.2014, 20:10   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Попробуйте вместо join использовать left join.
Streletz вне форума Ответить с цитированием
Старый 02.11.2014, 20:51   #3
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Пробовал… Не помогает.

Цитата:
Сообщение от Andrej_K Посмотреть сообщение
Пробовал… Не помогает.
Опять попробовал — получилось. Но я точно несколько раз делал лефт, вот убицца мне апстену… и райт и всякое другое… Мистика.

Последний раз редактировалось Stilet; 08.11.2014 в 08:42.
Andrej_K вне форума Ответить с цитированием
Старый 05.11.2014, 14:21   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Опять попробовал — получилось. Но я точно несколько раз делал лефт, вот убицца мне апстену… и райт и всякое другое… Мистика.
Никакой мистики. просто "неправильное" вычисление условий при использовании одной и той же таблицы (k-t_s.id_s =k-t_s.ids ).

Чтобы не было проблем при подключении ТОЙ же таблицы надо использовать алиасы.
Код:
select basekts.*
from 'k-t_s' as basekts
join 'k-t_s' as childkts on basekts.id =childkts.id_s
where childkts.ids is NULL
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 05.11.2014, 14:26   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Что мешает создать связующую таблицу для связей id = IDS? И в скорости прирост будет..
Человек_Борща вне форума Ответить с цитированием
Старый 05.11.2014, 14:38   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Зачем? Таблица-связка обычно делается для реализации отношения многие-к-многим. А здесь не вижу этого, а просто две таблиц k-t_s и k-ts и не правильный запрос
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.11.2014, 04:10   #7
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию

Всем спасибо, дело в ЛЕФТ ДЖОИНЕ было. Связи нет смысла делать, т. к. это запрос для редкой задачи по обслуживанию.
Andrej_K вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADO. Как связать в одной таблице несколько значений из другой? dolphin705 БД в Delphi 5 18.09.2013 07:26
Вывести список отсутствующих в базе значений. Aleksandr БД в Delphi 30 16.05.2011 12:26
Умножение одной ячейки на нужную ячейку в другой таблице. spring.girl Microsoft Office Access 3 13.11.2010 10:09
Замена значений в одной таблице на значения из другой 1134 Microsoft Office Excel 10 09.04.2010 12:12
Установка указателя в одной таблице по значению из другой Avalonix БД в Delphi 1 31.05.2008 17:20