Каков правильный синтаксис для кросс-таблицы SQL-запроса? - PullRequest
0 голосов
/ 28 октября 2008

Прямо сейчас у меня есть

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, где столбец ключевого слова ключевого слова таблицы ключевых слов - это конкретное значение, а практика - ссылка практической таблицы соответствует моему gp_id, который хранится в id. столбец этой таблицы.

Ответы [ 4 ]

3 голосов
/ 28 октября 2008

Я даже не уверен, что это допустимый 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

Я бы избежал неявных объединений, как в других примерах. Это только приводит к слезам позже.

1 голос
/ 28 октября 2008

<code>
select k.gp_id 
from gp.keywords as k,
     gp.practices as p
where
keyword_id=15
and practice_link is not null
and p.id=k.gp_id
0 голосов
/ 28 октября 2008
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
0 голосов
/ 28 октября 2008
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...