Извините за плохой титул, не знаете, как это лучше сказать.SQL Anywhere (12) - Left Join, не отличается/уникальным?
Я пытаюсь выкинуть любой экземпляр родителя, который имеет ребенок, который содержит х, у, или г
SELECT P.label, P.creationclass, P.attributes, P.type, P.uniqueid, C.label, C.idx, C.PID, C.creationclass, C.attributes, C.type, C.uniqueid
FROM t_equip_template AS P
LEFT JOIN t_equip_template AS C
ON P.ID = C.PID //only way to join these
WHERE P.type = '1003'
AND
C.creationclass NOT LIKE x
AND
C.creationclass NOT LIKE y
AND
C.creationclass NOT LIKE z;
Для дальнейшего объяснения, мой результирующий набор удаляет случаи, когда что-то
, но это не является достаточно отчетливым, так как есть случаи, когда вышеприведенное значение истинно, но я все еще получаю результат, содержащий PID, в котором один из его детей действительно имеет x, y, z true (хотя они не отображаются в результирующем списке). Я предпочел бы все, что будет выброшен, а не просто «случай, когда х, у, г является или не является истинным»
Поскольку это мой единственный способ соединения двух таблиц
P.ID = C.PID
Я все еще получаю экземпляры P.ID, которых я не хочу.
Есть ли способ включить «P.uniqueid», а если «x, y, z» является или не соответствует «P.ID = C.PID», тогда выкиньте P.uniqueid, а не только конкретный экземпляр «C.PID»/«P.uniqueid»?
Спасибо за помощь.
Пример:
P.ID P.uniqueid C.PID C.creationclass
1 00001 1 w <--There is a 'hidden result' x,y or z for this
1 00001 1 v <--There is a 'hidden result' x for this
1 00001 1 u <--There is a 'hidden result' x for this
2 00002 2 w
2 00002 2 v
3 00003 3 w
3 00003 3 v
Что я хочу:
P.ID P.uniqueid C.PID C.creationclass
2 00002 2 w
2 00002 2 v
3 00003 3 w
3 00003 3 v
В результате я хочу выкидывает каждый экземпляр 00001 не онил конкретные примеры, которые не критерии.
решение, благодаря @JohnBollinger
SELECT
P.label,
P.creationclass,
P.attributes,
P.type,
P.uniqueid,
C.label,
C.idx,
C.PID,
C.creationclass,
C.attributes,
C.type,
C.uniqueid
FROM
t_equip_template AS P
LEFT JOIN t_equip_template AS C
ON P.ID = C.PID
WHERE
P.type = '1003'
AND
AND NOT EXISTS (
SELECT 1 FROM
t_equip_template AS C2
WHERE
P.ID = C2.PID
AND (C2.creationclass LIKE x
OR C2.creationclass LIKE y
OR C2.idx LIKE z)
)
Вы имеете в виду, что у родителя может быть несколько детей, и вы хотите исключить родителей, у которых есть * любой * ребенок, который удовлетворяет вашим критериям? –
Может быть полезно, если вы добавите образец данных и нужный результат в свой вопрос. –
Что такое 'sql where (12)' является продуктом db? для вопросов sql включают выборочные данные и выход желаний. –