2016-06-10 2 views
0

Я пытаюсь объединить некоторые данные из трех разных таблиц в подходящий массив, но я зациклился на том, как подойти к этому.Можно ли объединить эти таблицы в одно значение массива

Прежде всего позвольте мне объяснить структуру:

Мой 'главный' стол snm_content:

Я только хочу, чтобы использовать id здесь

enter image description here

Второй стол 'snm_fieldsandfilters_connections':

element_id Важен здесь, он имеет то же значение, id в следующей таблице

enter image description here

Третий стол 'snm_fieldsandfilters_elements':

Здесь item_id важно и item_id такое же значение, как id в 'snm_content'

enter image description here

Так, например, я добавляю еще одну статью (элементы в snm_content), которая имеет id 4, то другой ряд будет добавлен в «snm_fieldsandfilters_connections» с element_id 22 и там тоже будет другая строка добавляется к «snm_fieldsandfilters_elements» с id 22 и item_id 4.

Как я могу получить element_id from'snm_fieldsandfilters_connections', чтобы соответствовать id в 'snm_fieldsandfilters_elements'? А затем сравните id с 'snm_content' с item_id из 'snm_fieldsandfilters_elements'.

Надеюсь, я объяснил это достаточно хорошо.

Каков наилучший способ достичь этого? (Я имею в виду SQL-мудрый)

Благодаря ответу, я понял, как это сделать.

РЕШЕНИЕ:

select ct.*, fe.*, cn.* 
from snm_content ct 
inner join snm_fieldsandfilters_elements fe on fe.item_id = ct.id 
inner join snm_fieldsandfilters_connections cn on cn.element_id = fe.id 
WHERE ct.catid IN ('10') 

ответ

1

Это звучит, как вы спрашиваете об объединении данных из разных таблиц. Способ сделать это - использовать SQL JOIN. Я предлагаю вам прочитать их, если вы не знаете, как их использовать. В то же время, как, например, это должно решить конкретную проблему, если я правильно понял требования:

select ct.id 
from snm_content ct 
inner join snm_fieldsandfilters_elements fe on fe.item_id = ct.id 
inner join snm_fieldsandfilters_connections cn on cn.id = fe.element_id 
+0

Я посуда, как их использовать, но с трудом придумывая этот запрос в логическом путь. Код, который вы опубликовали, не работает, когда я его выполняю. Я использую InnoDB в phpmyadmin, если это помогает. – twan

+0

Это ошибка, которую я получаю: '# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'from snm_content ct internal join snm_fieldsandfilters_elements fe on fe.item_id =' по строке 2 ' – twan

+0

@twan извините, не означает оскорбить. ваш нынешний уровень знаний не был ясен из вопроса.Я отредактировал ответ - в конце строки была паразитная запятая – ADyson

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