Как переписать SQL-запрос, имеющий подзапрос с объединениями - PullRequest
1 голос
/ 22 сентября 2011

У меня есть SQL-запрос, у которого есть подзапрос с соединениями.Я хотел бы переписать запрос без подзапроса, чтобы я мог создать представление.MySQL не допускает операторов SELECT, где FROM является подзапросом.

Возможно ли это?Я попытался удалить внешний выбор и переместить группу внутри запроса sub.Это частично работает, но некоторые данные неверны.

select *
from (SELECT r.id, r.dateAdded, r.listingId, r.rating, r.username, r.valid, tbl_data.nameShort, tbl_data.desk, d.model, d.hardware, d.serial, l.appVersion, r.photoUrl, r.comment
      FROM tbl_ratings r
      JOIN tbl_data on r.listingId = vi_data.id
      JOIN tbl_devices d on r.serial = d.serial
      JOIN tbl_log l on l.serial = d.serial
      ORDER BY d.serial, l.dateAdded DESC) x
group by id
order by dateAdded DESC

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Это так же просто, как:

SELECT     r.id, r.dateAdded, r.listingId, r.rating, r.username, r.valid,
           tbl_data.nameShort, tbl_data.desk, d.model, d.hardware,
           d.serial, l.appVersion, r.photoUrl, r.comment
      FROM tbl_ratings r
      JOIN tbl_data on r.listingId = vi_data.id
      JOIN tbl_devices d on r.serial = d.serial
      JOIN tbl_log l on l.serial = d.serial
      GROUP BY r.id
      ORDER BY r.dateAdded DESC

Кроме того, у вас есть ссылка на "vi_data", которого больше нет в запросе

0 голосов
/ 22 сентября 2011

Измените условие group by на group by r.id. Поскольку вы выбираете из производной таблицы (подзапроса), база данных не может сказать, что в этой производной таблице есть только одно поле «id» - она ​​видит только заголовки столбцов, как указано в подзапросе, а это r.id .

...