2012-02-01 55 views
0

今天,我有點不顧一切的編程,這似乎很容易,但我的大腦在這一點上不存在。如何查詢與類別相關的項目?

我有一個記錄表。每條記錄都屬於一個或多個類別。類別和記錄由具有record_id和category_id列的中間表連接。

我想要做的是查詢屬於與當前記錄相同類別的記錄。我會怎麼做呢?

謝謝!

回答

1

假設您的關聯表被稱爲'record_category'。並且您已經在列表中擁有「當前記錄」的類別ID。

select r.* from records r join record_category rc on rc.record_id=r.record_id where rc.category_id in(?category_ids) 

如果您擁有的是當前記錄的ID。那麼這將是一個更完整的查詢:

select r.* from record r join record_category rc on rc.record_id=r.record_id where rc.category_id in(select rc.category_id from record_category rc where record_id=?) group by r.record_id 

替換?與id的實際值進行比較,或將其用於預先準備好的語句中(取決於語言)。

+0

什麼是(?category_ids)...是一個mysql結構? category_ids是一個變量還是一個列名? – GeekedOut 2012-02-01 23:34:31

+0

category_ids將是您傳遞給查詢的類別標識列表。完全構造的查詢的一個實例是:select r。* from records r join record_category rc on rc.record_id = r.record_id where rc.category_id in(1,2,4,6) – ggreiner 2012-02-01 23:35:30