2010-05-13 2 views
1

У меня есть четыре таблицыПроблема взаимоотношений?

 
Tag=>id,tag_name 

Image=>Id,Image_name 

TagImage=>Id,tag_id,Image_id 


ImageStudent=id,Image_id,student_id 

И я хочу, чтобы найти запись, используя студенческий идентификатор и имя тега. Какие отношения я использую?

+5

Я бы начал, установив их на дату, а затем посмотрю, как они идут оттуда. –

+0

В какой записи вы пытаетесь найти? Запись изображения? Вы спрашиваете, как использовать JOIN для записи нужной вам записи? Также нужна таблица TagImage? – Abs

+1

Я предполагаю, что ассоциациями модели являются «Tag HABTM Image» и «Student HABTM Image» (нет модели «Студент», но она должна быть там). «TagImage» и «ImageStudent» являются «волшебными» моделями, которые создают отношения HABTM в ORM Cake: «Tag hasMany TagImage»/«TagImage принадлежит тег» и «Image hasMany TagImage /' TagImage принадлежит картине ». –

ответ

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

+0

Я создаю модель помощи вашего ответа сэр, но он не работает ..! Может объяснить мне подробно, как отношения HABTM gibven в модели ... plz – Dgo

+0

Вам нужно быть более конкретным с вашими вопросами, вы делаете это звук, как это ваше домашнее задание ... Вы можете получить ключи к отношениям по стыкам я использовал в запросе (OUTER против INNER) – mmattax

Смежные вопросы