正确进行SQL查询

时间:2014-05-08 19:16:48

标签: mysql sql sqlite

我尝试进行SQL查询,但我无法做到。 我有一个带有2个表的数据库。第一个表包含ID和单词,第二个表包含ID和同义词。我需要对数据库进行三次查询以获取输入的一个单词的同义词,但是最后一个查询中的问题(正如我所考虑的)。我甚至有关于如何正确创建这些问题的说明,但我被困住了:

开始获取单词id query

SELECT id FROM words WHERE word = 'Profit'

。之后,我们得到一个同义词列表

SELECT w_id, s_id FROM synonyms  WHERE w_id = '1234 'or s_id = '1234'. 

对重复值进行排序并选择同义词

 SELECT word FROM words WHERE id IN (1,2,3,4,5 ...)

我认为不是1,2,3,4,5必须是先前的查询,但如果我使用它,输出不会给我任何东西或者不给我需要的东西(ID而不是同义词)

表格数据:     (1,' WORD1&#39),(2,' WORD2'),(3,' WORD3&#39),(4,' word4' ),(5,'的word5'),(6,' word6'),(7,' word7'),(8,' word8&# 39;),(9,' word9'),(10,' word10')

并从表同义词:     (1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(1 ,10)

例如:如果我写了单词" word1"那么最后一个查询必须从第二个表中找到与之相关的所有同义词并在屏幕上显示结果,但我给了我相同的内容单词

2 个答案:

答案 0 :(得分:0)

试试这个

SELECT sw.word 
FROM words w
INNER JOIN
    synonyms s ON
        s.w_id = w.id
INNER JOIN
    words sw ON
        sw.id = s.s_id
WHERE w.word = 'Profit'

您也可以替换'利润'通过变量并使其成为一个函数。

答案 1 :(得分:0)

你必须处理两个方向; w_ids_ids_idw_id。 有几种可能的实现方式;一个是这个:

SELECT word
FROM words
WHERE id IN (SELECT s_id
             FROM synonyms
             WHERE w_id = (SELECT id
                           FROM words
                           WHERE word = 'Profit'))
   OR id IN (SELECT w_id
             FROM synonyms
             WHERE s_id = (SELECT id
                           FROM words
                           WHERE word = 'Profit'))