• Схлопывание версий в 2х таблицах?

    @res2001
    Developer, ex-admin
    Условием связывания вы вообще обнуляете смысл cross join.
    Собственно из-за этого условия отсеиваются записи, которых нет в ft.
    Предусмотрите в условии, что ft.id или st.id могут быть NULL, т.е. текущее условие должно выполняться только когда ft.id и st.id не NULL.
    Я бы сделал основной запрос с left join и к нему через union присоединил из st, то что не попало из st в первом запросе.
    Ответ написан
    2 комментария
  • Sql-ex какие особенности у проверочной бд "Компьютерная фирма"?

    @BorisKorobkov
    Web developer
    Вы забыли условие "... у которых есть продукты с известной ценой хотя бы в одной из таблиц..."

    То есть надо:
    select 
      maker,
      max(l.price) as laptop,
      max(pc.price) as pc,
      max(r.price) as printer
    from 
      Product t
      left join Laptop l 
        on t.model=l.model
      left join PC 
        on t.model=pc.model
      left join Printer r 
        on t.model=r.model
    group by 
      maker
    having
    	max(l.price) IS NOT NULL
    	OR max(pc.price) IS NOT NULL
    	OR max(r.price) IS NOT NULL
    Ответ написан
    Комментировать