1

我查看了类似的问题,但没有找到正确的语法。

我有这些表:

报价 - quote_id - author_id - quote_ENG

作者 - author_id - 作者

TopicMap - topicmap_id - topic_ENG

QuotesByTopic - quote_id - topicmap_id

我需要从表 Quotes 中获取 'quote_ENG',从表 Authors WHERE 'topic_ENG'='age' 中获取 'author'。

我能够得到'quote_ENG'值......:

SELECT quote_ENG
FROM Quotes, TopicMap, QuotesByTopic
WHERE TopicMap.topics_ENG='age'
  and QuotesByTopic.topicmap_id = TopicMap.topicmap_id
  and QuotesByTopic.quotes_id = Quotes.quotes_id 

...但我错过了最后一段获得“作者”价值的文章:

SELECT author, quote_ENG
FROM Authors, Quotes, TopicMap, QuotesByTopic
WHERE TopicMap.topics_ENG = 'age'
  and Authors.author_id = Quotes.author_id
  and QuotesByTopic.topicmap_id = TopicMap.topicmap_id
  and QuotesByTopic.quotes_id = Quotes.quotes_id

感谢您的任何帮助

4

2 回答 2

3

试试这个:

SELECT 
  q.quote_ENG,
  a.author
FROM QuotesByTopic  AS qt 
INNER JOIN TopicMap AS t ON qt.topicmap_id = t.topicmap_id
INNER JOIN Quotes   AS q ON qt.quotes_id   = q.quotes_id
INNER JOIN Authors  AS a ON a.author_id    = q.author_id
WHERE t.topics_ENG = 'age'
于 2013-09-01T14:38:51.573 回答
0

编辑:你在我打字的时候改变了你的问题......我仍然会使用一个独特的 incase 你想做类似 tma.topics_ENG IN ('age','gender') 的事情。正如其他人所展示的那样,我会使用显式连接。包括您自己在内的每个人都更容易阅读和理解。

SELECT DISTINCT
       ath.author,
       qts.quote_ENG
FROM quotes qts
INNER JOIN Authors ath
    ON qts.author_id = ath.author_id
INNER JOIN QuotesByTopic qbt
    ON qts.quote_id = qbt.quote_id
INNER JOIN TopicMap tma
    ON qbt.topicmap_id = tma.topicmap_id
WHERE tma.topics_ENG = 'age';
于 2013-09-01T14:43:51.237 回答