1

複雑なクエリについてサポートが必要です。私はVenuesテーブル、Tagテーブル、そしてテーブルを持っていVenues_Tag_lookupます。画面に1つの会場の詳細が表示されたら、現在の会場に類似している他の会場を表示できるようにしたいと思います。

これには、一致するタグの数が最も多い上位5つの会場を返すクエリが必要になります。(私はMSSQLを使用しています)

これが私のテーブルがどのように見えるかの簡単なレイアウトです。

Venues_tbl
----------
VenueId
Venue_name

Tag_tbl
---------
TagId
Tag_name

Venues_Tag_lookup
------------------
Venue_tagId
VenueId
TagId

ご不明な点がございましたらお問い合わせください。

前もって感謝します。

4

2 に答える 2

1
SELECT TOP 5
   V.Venue_name
FROM
   -- this = tags for this venue
   Venues_Tag_lookup this
   JOIN
   -- others = tags for other venues
   Venues_Tag_lookup others
            --see what matches, there will be a big pile of them
            ON this.TagId = others.TagId
   JOIN
   Venues_tbl V ON others.VenueID = V.VenueID
WHERE
   --filter to this and others
   this.VenueID = @TheOneOnScreen
   AND
   others.VenueID <> @TheOneOnScreen
GROUP BY
   --collapse to other venues ...
   V.Venue_name
ORDER BY
   -- ... and simply COUNT matches
   COUNT(*) DESC
于 2011-08-03T08:34:59.990 に答える
-1

次のクエリが役立つ場合があります。

-- params = @venueId、@tagId

選択する
        会場ID、
        会場名、
        (venues_tag_lookup vtl where vtl.venueid=v.venueid から count * を選択)tagCount
会場から_tbl v
どこで会場ID in(
  Venues_tag_lookup から会場 ID を選択します。ここで、tagId = @tagId
)
およびvenueId @venueId
3つの順序で並べる
于 2011-08-03T08:34:29.477 に答える