MySQL объединяет несколько - PullRequest
0 голосов
/ 09 мая 2011

Используя таблицу products в качестве мастера, я хочу перечислить все продукты.Если у продукта есть описание в таблице prod_desc, я хочу вытащить его. Также, если у продукта есть описание производителя, я хочу вытащить его. Я хочу, чтобы строка продукта отображалась один раз, есть ли у нее продукт.описание, описание производителя, одно, оба или ни одного.

Левое соединение хорошо работает для одного внешнего поиска, но второе портит его.

SELECT * FROM t1
LEFT JOIN t3 ON t1.a=t3.a
LEFT JOIN t2 ON t1.b=t2.b

Ответы [ 2 ]

1 голос
/ 09 мая 2011

Вам нужно будет «свернуть» описания в случае, если для одного и того же продукта имеется несколько описаний продуктов или для одного и того же продукта есть описания нескольких производителей.

Select P.Id, P...
    , Group_Concat( PD.desc ) As DescriptionList
    , Group_Concat( PMD.desc ) As MfrDescriptionList
From products As P
    Left Join prod_desc As PD
        On PD.product_id = P.id
    Left Join prod_mfr_desc As PMD
        On PMD.product_id = P.id
Group By P.id
0 голосов
/ 09 мая 2011

Мне кажется, что ваша "select *" может быть проблемой. но я не могу точно сказать, что вы подразумеваете под "испортить". Попробуйте выбрать только то, что вы хотите, и посмотрите, решит ли это это.

Например,

SELECT a, b, c, d, e
FROM t1
  LEFT JOIN t3 
    ON t1.a = t3.a
  LEFT JOIN t2
    ON t1.b = t2.b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...