За последние 24 часа нас посетили 22368 программистов и 1144 робота. Сейчас ищут 726 программистов ...

Как искать по двум таблицам нужные значения

Тема в разделе "MySQL", создана пользователем san4747, 1 мар 2020.

Метки:
  1. san4747

    san4747 Новичок

    С нами с:
    11 дек 2019
    Сообщения:
    3
    Симпатии:
    0
    Есть таблицы
    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):
    1.  
    2. SELECT t_item.id
    3. FROM (t_item, table1)
    4. WHERE  table1.type = 1 AND t_item.id = table1.id_item
    Если делаю так то ничего не выводится
    Код (Text):
    1.  
    2. SELECT t_item.id
    3. FROM (t_item, table1, table2)
    4. 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):
    1.  
    2. SELECT t_item.id
    3. FROM (t_item, table1, table2)
    4. (table1.type LIKE 1 AND t_item.id = table1.id_item) OR (table2.type LIKE 1 AND t_item.id = table2.id_item)
    Подскажите пожалуйста в чем проблема может быть? и как лучше такую выборку сделать
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    На кой ляд типы разделены на две таблицы?
    Для начала изучите правила нормализации таблиц. Ну и принципы построения архитектуры бд тоже изучить не помешает.
     
  3. san4747

    san4747 Новичок

    С нами с:
    11 дек 2019
    Сообщения:
    3
    Симпатии:
    0
    Будут другие поля в этих таблицах , не связанные друг с другом
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Но пока что по показанной картинке даже одна таблица типов не нужна. Достаточно соотв. поля в таблице t_item.