Прямо сейчас у меня есть
SELECT gp_id FROM gp.keywords
WHERE keyword_id = 15
AND (SELECT practice_link FROM gp.practices
WHERE practice_link IS NOT NULL
AND id = gp_id)
Это не приводит к синтаксической ошибке, однако для значений, в которых он должен возвращать строку (строки), он просто возвращает 0 строк.
Я пытаюсь получить gp_id из gp.keywords, где столбец keyword_id таблицы ключевых слов представляет собой конкретное значение, а Practice_link - это таблица практик, соответствующая gp_id, который у меня есть, который хранится в столбце id этого стол.






SELECT k.gp_id
FROM gp.keywords k, gp.practices p
WHERE
p.id = k.gp_id.AND
k.keyword_id = 15 AND
p.practice_link is not null
SELECT g.gp_id, p.practice_link FROM gp.keywords g, gp.practices p
WHERE
g.keyword_id = 15 AND p.practice_link IS NOT NULL AND p.id = g.gp_id
Я даже не уверен, что это правильный SQL, поэтому удивлен, что он вообще работает:
SELECT gp_id
FROM gp.keywords
WHERE keyword_id = 15
AND (SELECT practice_link FROM gp.practices WHERE practice_link IS NOT NULL AND id = gp_id)
Как насчет этого:
SELECT kw.gp_id, p.practice_link
FROM gp.keywords AS kw
INNER JOIN gp.practices AS p
ON p.id = kw.gp_id
WHERE kw.keyword_id = 15
Я бы избегал неявных объединений, как в других примерах. Это только потом приводит к слезам.