簡體   English   中英

如何使用MYSQL中的相關表過濾具有多個特征的資源

[英]How to filter resources with multiple characteristics with related tables in MYSQL

我在 MYSQL 中有 3 個表。

[Resources]
Id
Name
....
[Characteristics]
Id
Name
...

“資源”可以有多個“特征”,所以我在其他表中建立了關系:

[RecurCaract]
Id
IdRes (Id of Resource)
IdCha (Id of Characteristic)

因此,例如,我將這些記錄與這些特征相關聯:

    Example 1 - Car1 / Car2 / Car3 / Car4
    Example 2 - Car1 / Car3
    Example 3 - Car2 / Car3
    Example 4 - Car3 / Car4

我需要一個查詢來顯示所有選擇 Car2 和 Car3 的資源(兩者)。

在此示例中(示例 1 和示例 3)

要搜索啟用特征編號 25 的資源...我可以使用此查詢:

SELECT Resources.Name, Characteristics.Name FROM Resources LEFT JOIN RecurCaract ON (Resources.Id=RecurCaract.IdRes) LEFT JOIN Characteristics ON (Characteristics.Id=RecurCaract.IdCha) WHERE Characteristics.Id = '25'

但是...如果我需要具有 25 號特征和 3 號啟用(兩者)的資源...我有問題。

SELECT Resources.Name, Characteristics.Name FROM Resources LEFT JOIN RecurCaract ON (Resources.Id=RecurCaract.IdRes) LEFT JOIN Characteristics ON (Characteristics.Id=RecurCaract.IdCha) WHERE Characteristics.Id = '25' AND Characteristics.Id = '3'

此查詢不起作用。

最好的方法是什么?

select r.name RESOURCE, c1.name Characteristic_1, c2.name Characteristic_2 from 
RecurCaract rc1 inner join RecurCaract rc2 on rc1.resource = rc2.resource left join 
resources r on r.id = rc1.resource left join characteristics c1 on c1.id = 
rc1.characteristic left join characteristics c2 on c2.id = rc2.characteristic
where rc1.characteristic = 25 and rc2.characteristic = 3;

這應該適合你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM