Есть 3 таблицы:
Table1 : id | name | source
Table2 : id | name
General : id | element_id | type
Суть в том, что в General лежат строки в определенной последовательности (последовательность важна), где element_id это id из Table1 или Table2 а type определяет к какой из таблиц относится строка (0 - Table1, 1 - Table2).
Как сделать выборку из таблицы General чтобы на выходе получить нечто подобное?
Или есть более удобный способ хранить данные?
Изначально казалось, что вариант General : id | table1_id | table2_id не подойдет, так как одно из полей всегда будет null.
element_id | name
22 | test
58 | Joe
22 | hello
(здесь element_id = 22 не одна и та же строка,
а одна из них принадлежит Table1, другая Table2
Или есть более удобный способ хранить данные?
Именно так! Таблицы Table1
и Table2
объединить, поле type
перенести в эту объединенную таблицу. Останется один простой джойн.
Таблицы:
one_table: id | name | source | type
general : id | element_id
Запрос:
select g.element_id, t.name
from general g
join one_table t on t.id = g.element_id
здесь element_id = 22
не одна и та же строка, а одна из них принадлежит Table1
, другая Table2
Если у вас сейчас встречаются одинаковые id
в таблицах Table1
и Table2
, придется один раз сгенерировать заново при объединении.
Как вариант: select ... from General, Table1, Table2 where (General.element_id=Table1.Id and General.type=1) or (General.element_id=Table2.Id and General.type=2) Возможно, работать будет медленнее. Одинаковые id в Table 1 и 2 лучше б в любом случае убрать, как по мне. Не знаю, что именно у вас за база, так что конкретно не скажу. Структуру вам уже посоветовали. В вашем случае, возможно, стоит так и сделать — хрен с им, с лишним полем source. Если набор полей для разных типов сильно различается, стоит, имхо, сделать таблицу с общим набором и дополнительные для каждого типа. А в качестве поля связи везде использовать id из центральной таблицы.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть задача реализовать DatePicker на yii2Там будет много нюансов по выбору даты которые либо подтягиваются из БД, либо должны быть прописаны на стороне...
Подскажите как реализовать на joomla фильтр категорий, надо ли товары привязывать к бд?Нужно сделать так чтобы при нажатии на категорию из через...
нужно передать js переменную в качестве аргумента smarty функции, вроде такого
Всем привет, интересует как можно сделать упрощённую систему заказаРазного рода модули не предлагайте, так как хочу попробовать сделать...