2010-05-13 111 views
1

我有四個表關係問題?

 
Tag=>id,tag_name 

Image=>Id,Image_name 

TagImage=>Id,tag_id,Image_id 


ImageStudent=id,Image_id,student_id 

而且我想找到使用學生證和標籤名的記錄。我使用什麼關係?

+5

我首先將它們設置在一個日期上,然後看它們是如何從那裏開始的。 – 2010-05-13 14:05:50

+0

你想找什麼記錄?圖像記錄?你問你如何使用JOIN來獲得你需要的記錄? TagImage表還真的需要嗎? – Abs 2010-05-13 14:10:49

+1

我猜模型關聯是'Tag HABTM Image'和'Student HABTM Image'(沒有提供'Student'模型,但必須在那裏)。 'TagImage'和'ImageStudent'是在Cake的ORM中創建HABTM關係的「神奇」模型:'Tag hasMany TagImage' /'TagImage belongsTo Tag'和'Image hasMany TagImage /'TagImage belongsTo Image'。 – 2010-05-13 14:17:55

回答

0

對於像這樣的查詢可能更好地使用UNION,這裏有必要的連接。

 

SELECT Image.* FROM Image 
INNER JOIN ImageStudent ON Image.Id = ImageStudent.Image_id 
LEFT OUTER JOIN TagImage ON Image.Id = TagImage.Image_id 
INNER JOIN Tag ON TagImage.Id = Tag.Id 
WHERE Tag.tag_name = 'foo' AND ImageStudent.student_id = 42; 
 
+0

所有的事情都很好?謝謝 你能詳細告訴我參照完整性嗎?那是什麼? – Dgo 2010-05-14 07:24:25

+0

我創建你的答案先生的模型幫助,但它不工作..!可以詳細解釋我如何HABTM關係在模型中gibven ... plz – Dgo 2010-05-14 08:52:08

+0

你需要更多具體與您的問題,你做這個聽起來像是你的家庭作業...你可以通過我在查詢中使用的連接(外部對內部)獲得線索關係 – mmattax 2010-05-14 13:08:33