1

同様の質問を調べましたが、正しい構文が見つかりませんでした。

私はこれらのテーブルを持っています:

引用 - quotes_id - author_id - quote_ENG

著者 - author_id - 著者

TopicMap - topicmap_id - topic_ENG

QuotesByTopic - quotes_id - topicmap_id

テーブル Quote から '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

編集: 入力中に質問を変更しました... 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 に答える