0

あるサイトが、人気のある記事を、それらがリリースされたメディア形式に従って分類するとします。そのデータベースは、次のテーブルで構成されています。

ストーリーテーブル

リンクテーブル

ここに画像の説明を入力してください

映画などの形式でリリースされたすべてのストーリータイトルを取得するには、どのような種類のクエリを使用する必要がありますか?

私はこのようなことをしようと思いましたが、もっと良い方法があるのではないかと思います。

SELECT `story_id`
FROM `links` INNER JOIN `media`
  ON `links`.`medium_id` = `media`.`medium_id`
  WHERE `media`.`medium_name` = :medium_name"

for every retrieved story_id
{
    SELECT `story_summary` FROM `stories` WHERE `story_id` = :story_id
}

どんな助けでも大歓迎です!

4

3 に答える 3

1
SELECT
    s.story_title
FROM MEDIA as m
LEFT JOIN LINKS as l ON l.medium_id = m.medium_id
LEFT JOIN STORIES as s ON s.story_id = l.story_id
WHERE m.medium_name = 'movie'
于 2013-01-18T19:22:25.740 に答える
1

代わりにこのクエリを試してください(3行目と最後の行を追加しました):

SELECT `story_id` FROM `links` 
INNER JOIN `media` ON `links`.`medium_id` = `media`.`medium_id`
inner join stories on stories.story_ID=links.story_id
 WHERE `media`.`medium_name` = :medium_name
and `story_summary`.`story_id` in (:all_the_story_id)

: all_the_story_idそこにすべてのstory_idを入れて、mysqlを見てください

Extra Join を作成すると、必要なすべての情報が得られ、結果ごとにクエリを作成する必要がなくなります。

于 2013-01-18T19:15:04.773 に答える
0
select s.story_title
from stories s, links l, media m
where m.medium_name = 'movie' and
s.story_id = l.story_id and
l.medium_id = m.medium_id

これは基本的に、raheel が投稿したクエリと同じですが、構文が異なります。ストーリーと中テーブルが直接結合されていない理由はありますか? クエリとデータベースを簡素化できます。

于 2013-01-18T19:49:09.927 に答える