Как правильно составить сложный MySQL запрос?

Есть таблицы:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, screen, price)
Printer(code, model, color, type, price)
Как обеденить таблицы PC, Laptop, Printer и вывести определенный maker?
  • Вопрос задан
  • 2347 просмотров
Решения вопроса 1
svd71
@svd71
вопрос некоректен вот почему: непонятно как нужно реагировать на отсуствие записей в одной из таблиц, нет инфы хотябы о первичных ключах в таблицах (о вторичных уже можно будет догадаться). Кроме того просто maker сам по себе не интересен: нужны либо дополнительные поля, либо условие.

Поэтому приведу простой пример, который работает если все таблицы имеют данные.
select pd.maker from pc, laptop lp, printer pr, product pd
where pc.model=pd.model 
and pc.model=lp.model and pc.code=lp.code
and pc.model=pr.model and pc.code=pr.code

Причем данные в некоторых случаях будут повторяться из-за указанных выше причин.

Если же всетаки есть желание сделать список чохом, объединив все таблицы в листе оператором UNION (предположил тоько по тегу), то команда должна быть примерно такой
select code,  speed, ram, hd, screen, '' as cd, '' as color, price, maker, pd.model, pd.type from Product pd, Laptop lp where pd.model=lp.model
UNION
select code,  '' as speed, '' as ram, '' as hd, '' as screen, '' as cd, color, price, maker, pd.model, pd.type from Product pd, Printer pt where pd.model=pt.model and pd.type=pt.type
UNION
select code,  speed, ram, hd, '' as screen, cd, '' as color, price, maker, pd.model, pd.type from Product pd, PC pc where pd.model=pc.model
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы