Есть таблицы t_item это список элементов , у каждого есть уникальный id и имя table1 - это таблица с номером типом у элементов 1,2 table2 - это таблица с номером типом у элементов 3,4 t_item id | name 1 | имя 1 2 | имя 2 3 | имя 3 4 | имя 4 table1 id_item | type 1 | 0 2 | 1 table2 id_item | type 3 | 1 4 | 0 Я делаю выборку в одном запросе, т.е нужно вывести все элементы из таблицы t_item по указанному типу Получилось только по одному типу находить Код (Text): SELECT t_item.id FROM (t_item, table1) WHERE table1.type = 1 AND t_item.id = table1.id_item Если делаю так то ничего не выводится Код (Text): SELECT t_item.id FROM (t_item, table1, table2) WHERE table1.type = 1 AND t_item.id = table1.id_item AND table2.type = 1 AND t_item.id = table2.id_item Если так , отображается в соответствии с типом, но почему-то клонируется каждый элемент, в итоге получается 2 элемента с id 2, и 2 элемента с id 3 , всего выводит 4 элемента, как из всего списка, если 5 к примеру всего элементов в t_item то с id 2 клонируется 3 раза Код (Text): SELECT t_item.id FROM (t_item, table1, table2) (table1.type LIKE 1 AND t_item.id = table1.id_item) OR (table2.type LIKE 1 AND t_item.id = table2.id_item) Подскажите пожалуйста в чем проблема может быть? и как лучше такую выборку сделать
На кой ляд типы разделены на две таблицы? Для начала изучите правила нормализации таблиц. Ну и принципы построения архитектуры бд тоже изучить не помешает.
Но пока что по показанной картинке даже одна таблица типов не нужна. Достаточно соотв. поля в таблице t_item.