当前版本:
表(BND_Listing
)作为A包含商店位置信息等...
表格(BND_ListingCategories
),因为B包含分类A的类别
我使用查询字符串来创建"过滤器"在我的网站上根据用户选择对A进行排序的功能。我使用以下select语句填充我网站上的网格:
SELECT *
FROM bnd_listing_testing
RIGHT JOIN bnd_listingcategories
ON bnd_listing_testing.catid = bnd_listingcategories.catid
WHERE ( categoryname = '[querystring:filter-Category]'
OR '[querystring:filter-Category]' = 'All' )
AND ( city = '[querystring:filter-City]'
OR '[querystring:filter-City]' = 'All' )
AND ( region = '[querystring:filter-State]'
OR '[querystring:filter-State]' = 'All' )
AND ( country = '[querystring:filter-Country]'
OR '[querystring:filter-Country]' = 'All' )
AND ISNULL(company, '') <> ''
ORDER BY company ASC
我在网站上有一个基于三个选择框的表单会将城市/州/国家/地区值传递给查询字符串,上面的查询是&#34;倾听&#34;用于填充我的网格。
现在一切正常,但是我需要将多个类别归因于表A中的任何一个记录,该记录当前只是一个具有一个值的列。
我已经读过Junction Tables / Many to Many关系,并认为这是我需要走的路。我理解基本概念,但是我在更新填充网格的SELECT语句时遇到问题,以考虑我将表(BND_Junction
)命名为C的Junction表。
我非常感谢你们中的任何一个例子,我可以如何操纵我的select语句来处理表C但仍然有相同的功能。
如果有任何要点需要澄清,请告诉我。
更新
我已经尝试了以下有效的查询,但为了简单起见,删除了查询字符串过滤器部分。
SELECT DISTINCT *
FROM bnd_listingjunction
JOIN bnd_listing
ON bnd_listing.catid = bnd_listingjunction.catid
JOIN bnd_listingcategories
ON bnd_listingcategories.catid = bnd_listingjunction.catid
答案 0 :(得分:0)
SELECT *
FROM bnd_listingjunction
JOIN bnd_listing_testing
ON bnd_listing_testing.lid = bnd_listingjunction.junc_lid
JOIN bnd_listingcategories
ON bnd_listingcategories.catid = bnd_listingjunction.junc_catid
WHERE ( categoryname = '[querystring:filter-Category]'
OR '[querystring:filter-Category]' = 'All' )
AND ( city = '[querystring:filter-City]'
OR '[querystring:filter-City]' = 'All' )
AND ( region = '[querystring:filter-State]'
OR '[querystring:filter-State]' = 'All' )
AND ( country = '[querystring:filter-Country]'
OR '[querystring:filter-Country]' = 'All' )
AND ISNULL(company, '') <> ''
ORDER BY company ASC