За последние 24 часа нас посетили 22149 программистов и 1435 роботов. Сейчас ищут 763 программиста ...

Как к каждой строке таблицы привязать другую таблицу?

Тема в разделе "MySQL", создана пользователем Атм_Евгений, 29 фев 2020.

  1. Атм_Евгений

    Атм_Евгений Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    206
    Симпатии:
    5
    Всем привет!

    Ребята, подскажите, как к каждой строке таблицы привязать другую таблицу? Все нужно средствами БД MySQL. Как сделать на PHP я знаю.

    Конкретно задача:
    1 . Создана "обычная" таблица.
    2. Посредством SELECT * FROM обычная таблица - делаем выборку всех строк.
    3. Но для каждой строки есть еще другая таблица с данными, и, необходимо, чтобы эти данные (из всех таблиц для каждой строки) летели в одном массиве с выборкой из первой таблицы.

    В первой обычной таблице можно добавить любое необходимое поле для этих целей, например id с ключем. Я добавил столбец и в каждой ячейке этого столбца каждой строки прописал имя нужной таблицы. А дальше не знаю что делать и как.
    Подскажите. За ранее благодарю!
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.795
    Симпатии:
    650
    Делай отдельным запросом. Если я правильно понял, тебе нужно что-то такое: Простая модель данных.
    --- Добавлено ---
    Т.е. все данные из всех таблиц сразу? :D
     
  3. Атм_Евгений

    Атм_Евгений Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    206
    Симпатии:
    5
    Ну да , все и сразу! :D

    Простым запросом я понимаю так: первую основную таблицу выбрал, затем перебираю массив полученных данных, подставляю имена других таблиц из этого массива в новые запросы и выбираю все таблицы?
     
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.795
    Симпатии:
    650
    Да. А если данные во второстепенных таблицах похожи по составу полей и отличаются прежде всего тем, что они соответствуют разным записям осн. таблицы, то можно их объединить в одной таблице и делать выборку одним запросом, при необходимости сортируя по «id родителя» для группировки. Причем, если нужно, эти группы могут представляться в БД, как отдельные таблицы. Там есть коммент со ссылкой на мою статью. Подкатегории, соотв. разным разделам, физически хранятся в одной таблице, но в БД видны в том числе и как записи разных таблиц, по одной таблице на каждый раздел.
    --- Добавлено ---
    В случае объединения второстепенных таблиц также можно всю выборку делать одним запросом, хотя это далеко не всегда эффективно. Делается путем «разворота таблиц»: вы в первую очередь выбираете из единой второстепенной таблицы и к каждой записи при помощи LEFT JOIN присоединяете нужные поля осн. таблицы. Я написал «нужные», потому что нужно стараться сократить объем присоединяемых данных, т.к. в них будет много дублей из осн. таблицы.
     
  5. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @Атм_Евгений, а почему бы не почитать книг и не лепить горбатого к стенке?
    Первая и главная ошибка, в ячейке строки таблицы не должно быть названия таблицы.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.795
    Симпатии:
    650
    Не будь столь категоричен. Бывают разные ситуации.

    P.S. Ты скорее всего прав применительно к случаю ТСа. Я ему писал, в основном ориентируясь на его виденье решения. Но показанный мной вариант предназначен для немного большего, чем создание элементарной иерархии :)