2016-03-24 10 views
0

次のステートメントでは、データベースからツイートとその作者情報を取得しようとしています。また、それらのツイートに関連するハッシュタグ(つまり、それらのツイートに記載されている)を検索したいSQL where句はprevoius selectステートメントに依存します

select Tweet.Label, Tweet.TDate, Author.Lable, Author.ALink, Tweet.TLink, Tweet.ID as TID 
from Tweet, Author 
where Tweet.ID IN 
(select TweetID from TweetMention where MentionID IN 
(select ID from Mention where Label = 'Cr7Prince4ever')) 
AND Author.ID = Tweet.AuthorID 
UNION 
select Label, HLink 
from Hashtag 
where ID IN 
(select HashID from TweetHashs where TweetID = TID) 

Tweetとハッシュタグをリンクする方法を除いて、すべてうまくいきます。私はまずツイートとその作者を取得し、検索されたツイートに基づいてこれらのツイートに書き込まれたハッシュタグを検索します。現在、修正できなかったエラーは、where句where TweetID = TIDの2番目のselect文にあります。私は2番目のステートメントが最初のステートメントで検索されたツイートIDに基づいてツイートIDを取得するようにしようとしましたが、うまくいきませんでした。

+0

まずそれは、SQLサーバーやMySQLで指定してください。 sql-serverはMicrosoft SQL Serverで一般的なSQL Serverではありません。次に、使用しているデータベースのバージョンを指定します。 – FLICKER

+2

私はいくつか間違ったものを数えてみましょう:(1)タグとして全く関係のない2つのデータベースがあります。 (2)古い構文を使用しています( 'from'句のカンマは禁止する必要があります)。 (3)異なる列を持つ2つのサブクエリで 'union 'を実行している。 (4)おそらく、 'where'節(' TID')で列エイリアスを使用しようとしています。私はあなたがこの質問を削除し、サンプルデータ、希望の結果、あなたが望むものの明確な説明、そして壊れたクエリが「うまくいっている」という主張は別の質問をすることをお勧めします。 –

答えて

0

クエリには多くの問題があり、機能しません。

はたぶん、あなたはこのようなクエリを探しています:

select  Tweet.Label, 
      Tweet.TDate, 
      Author.Lable, 
      Author.ALink, 
      Tweet.TLink, 
      Tweet.ID, 
      Hashtag.Label, 
      Hashtag.HLink   
from  Tweet 
inner join Author 
     on Tweet.AuhtorID = Author.ID 
left join TweetHashs 
     on TweetHashs.TweetID = Tweet.ID 
left join Hashtag 
     on Hashtag.ID = TweetHashs.HashID 
where  Tweet.ID IN 
      ( select TweetID 
       from TweetMention 
       where MentionID IN 
         ( select ID 
         from Mention 
         where Label = 'Cr7Prince4ever' 
         ) 
      ) 

NB:TweetHashsのスペルが間違っているようだが、これは、あなたがそれを置く方法です。

上記のクエリは、別の行のツイートの各ハッシュをリストするので、同じツイートの複数の結果を返します。あなたはつぶやきごとに1つだけの結果を持っていることを好む、とそのハッシュは1コンマ区切りのリストに連結されている場合は、group bygroup_concatを使用することができます。

select  Tweet.Label, 
      Tweet.TDate, 
      Author.Lable, 
      Author.ALink, 
      Tweet.TLink, 
      Tweet.ID, 
      group_concat(Hashtag.Label) labels, 
      group_concat(Hashtag.HLink) links   
from  Tweet 
inner join Author 
     on Tweet.AuhtorID = Author.ID 
left join TweetHashs 
     on TweetHashs.TweetID = Tweet.ID 
left join Hashtag 
     on Hashtag.ID = TweetHashs.HashID 
where  Tweet.ID IN 
      ( select TweetID 
       from TweetMention 
       where MentionID IN 
         ( select ID 
         from Mention 
         where Label = 'Cr7Prince4ever' 
         ) 
      ) 
group by Tweet.ID 
+0

これはあなたの質問に答えましたか?あなたはコメントを残すことができますか? – trincot