- Код: Выделить всё
WHERE
(EMPLOYEES.EMPLOYEE_ID = CLIENTS.CREATOR OR CLIENTS.CREATOR IS NULL) AND (CLIENTS.CREATOR = CLIENTS.EDITOR OR CLIENTS.EDITOR IS NULL)
Модератор: Модераторы
WHERE
(EMPLOYEES.EMPLOYEE_ID = CLIENTS.CREATOR OR CLIENTS.CREATOR IS NULL) AND (CLIENTS.CREATOR = CLIENTS.EDITOR OR CLIENTS.EDITOR IS NULL)
vitaly_l писал(а):Какие эти? (кстати там нужно брать INNER JOIN (или просо JOIN), а не LEFT)
vitaly_l писал(а):У него скорее всего вот это значение не равно друг другу: CREATOR_EMPL.EMPLOYEE_ID = CLIENTS.CREATOR, т.к. оно всегда должно быть равно.
Unvictis писал(а):Создатель записи присваивается при добавлении новой записи в таблицу CLIENTS и по этому в принципе не может содержать NULL
olegy123 писал(а):разве CLIENTS.CREATOR = CLIENTS.EDITOR на всех позициях CLIENTS?
EMPLOYEES.EMPLOYEE_ID = CLIENTS.CREATOR AND
EMPLOYEES.EMPLOYEE_ID = CLIENTS.EDITOR
EMPLOYEES.EMPLOYEE_ID = CLIENTS.CREATOR AND
CLIENTS.CREATOR = CLIENTS.EDITOR
kosteek писал(а):Не совсем понял что подразумевается под конвейером.
FROM CLIENTS,
(select * from EMPLOYEES) as CREATOR_EMPL,
(select * from EMPLOYEES) as EDITOR_EMPL
WHERE CREATOR_EMPL.EMPLOYEE_ID = CLIENTS.CREATOR AND (EDITOR_EMPL.EMPLOYEE_ID = CLIENTS.EDITOR OR CLIENTS.EDITOR IS NULL)
vitaly_l писал(а):Ему нужны 100% совпадения: CLIENTS.CREATOR = CLIENTS.EDITOR... либо NULL (те которые ещё не редактировались создателями).
SELECT CLIENTS.CLIENT_ID,
CLIENTS.CREATOR,
EMPLOYEES.EMPLOYEE AS "CREATORLOOKUP",
CLIENTS.EDITOR,
EMPLOYEES.EMPLOYEE AS "EDITORLOOKUP",
..
SELECT CLIENTS.CLIENT_ID,
CLIENTS.CREATOR,
CREATOR.EMPLOYEE AS "CREATORLOOKUP",
CLIENTS.EDITOR,
EDITOR.EMPLOYEE AS "EDITORLOOKUP",
CLIENTS.EDITED,
CLIENTS.CLIENT,
CLIENTS.PHONE,
CLIENTS.ADDRESS,
CLIENTS.E-MAIL,
CLIENTS.ANGRY,
CLIENTS.NOTES
FROM
CLIENTS AS C
LEFT JOIN EMPLOYEES AS CREATOR ON CREATOR.EMPLOYEE_ID=C.CREATOR
LEFT JOIN EMPLOYEES AS EDITOR ON EDITOR.EMPLOYEE_ID=C.EDITOR
WHERE C.EDITOR=NULL OR C.EDITOR=ID_MODERATOR
olegy123 писал(а):[EMPLOYEES.EMPLOYEE AS "CREATORLOOKUP"] = [EMPLOYEES.EMPLOYEE AS "EDITORLOOKUP"] - неверное построение запроса.
olegy123 писал(а):на узлах могут быть разные результаты..
olegy123 писал(а):Но так как название одно и тоже в таблице - то он думает
olegy123 писал(а):даже если этот источник изменился в цепях конвейера..
kosteek писал(а):Прошу обратить внимание на последний запрос который я писал выше, а именно на часть:
- Код: Выделить всё
FROM CLIENTS,
(select * from EMPLOYEES) as CREATOR_EMPL,
(select * from EMPLOYEES) as EDITOR_EMPL
WHERE CREATOR_EMPL.EMPLOYEE_ID = CLIENTS.CREATOR AND (EDITOR_EMPL.EMPLOYEE_ID = CLIENTS.EDITOR OR CLIENTS.EDITOR IS NULL)
Вот как раз по конвейеру, буду временно выбраны две разные таблицы с одинаковым содержание (CREATOR_EMPL и EDITOR_EMPL не одно и тоже, но взяты с одной таблицы EMPLOYEES), что и решает проблему CLIENTS.CREATOR = CLIENTS.EDITOR
Когда ты на заводе за конвейером и херачишь план, сверху дают команду (сейчас обрезаем NULL) - пришло фура с Array быстренько перегрузил в другую фуру - оставил там NULL. И отправил дальше.vitaly_l писал(а):olegy123 писал(а):[EMPLOYEES.EMPLOYEE AS "CREATORLOOKUP"] = [EMPLOYEES.EMPLOYEE AS "EDITORLOOKUP"] - неверное построение запроса.
Естественно ложное! Разве это может быть иначе? От того что, они записаны в разные переменные они не перестали быть одним и тем-же.
vitaly_l писал(а):olegy123 писал(а):на узлах могут быть разные результаты..
ПРОТЕСТУЮ!!!!!!! там всегда одинаковые результаты. <== это программа, а не гололёд. здесь вам не хоккей!
сначала думает парсер.. что он думает когда встретились одинаковые слова? а ему нужно с оптимизировать сложный запрос. Отправить в работу на конвейер, где узлам за ваши "название полей" - пошлют куда подальше.vitaly_l писал(а):olegy123 писал(а):Но так как название одно и тоже в таблице - то он думает
ПРОТЕСТУЮ!!!!!!! ОН НЕ ДУМАЕТ!!! ОНО ЖЕЛЕЗКА ( пока ещё)
olegy123 писал(а): CLIENTS AS C
LEFT JOIN EMPLOYEES AS CREATOR ON CREATOR.EMPLOYEE_ID=C.CREATOR
LEFT JOIN EMPLOYEES AS EDITOR ON EDITOR.EMPLOYEE_ID=C.EDITOR
WHERE C.EDITOR=NULL OR C.EDITOR=ID_MODERATOR
WHERE
EMPLOYEES.EMPLOYEE_ID = CLIENTS.CREATOR AND (CLIENTS.CREATOR = CLIENTS.EDITOR OR CLIENTS.EDITOR = ID_MODERATOR OR CLIENTS.EDITOR IS NULL)
olegy123 писал(а):сначала думает парсер.. что он думает когда встретились одинаковые слова? а ему нужно с оптимизировать сложный запрос. Отправить в работу на конвейер, где узлам за ваши "название полей" - пошлют куда подальше.
прочитал как ..на 111 эрекции..vitaly_l писал(а):теперь у него думает ПАРСЕР... И задумался у него парсер и на 111 итерации,
SELECT CLIENTS.CLIENT_ID,
CLIENTS.CREATOR,
CREATOR.EMPLOYEE AS "CREATORLOOKUP",
CLIENTS.EDITOR,
EDITOR.EMPLOYEE AS "EDITORLOOKUP",
CLIENTS.EDITED,
CLIENTS.CLIENT,
CLIENTS.PHONE,
CLIENTS.ADDRESS,
CLIENTS.E-MAIL,
CLIENTS.ANGRY,
CLIENTS.NOTES
FROM
CLIENTS AS C
LEFT JOIN EMPLOYEES AS CREATOR ON CREATOR.EMPLOYEE_ID=C.CREATOR
LEFT JOIN EMPLOYEES AS EDITOR ON EDITOR.EMPLOYEE_ID=C.EDITOR
WHERE C.EDITOR=NULL OR C.EDITOR=ID_MODERATOR
Unvictis писал(а):Как видно из скриншота в запросе отсутствуют как минимум первые две записи из таблицы CLIENTS.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3