2016-06-12 9 views
0

Здравствуйте, я работаю с проектом базы данных MySQL, и я конвертирую его в базу данных MS ACCESS.MySQL Query to MS Access Query

Может ли кто-нибудь помочь мне в эквиваленте этого запроса от MySQL до MS ACCESs SQL? Becouse my ms access query не работает.

для MySQL Query:

Выбор количества (u.phone) в ordernr, u.firstname, u.lastname, u.address от пользователя U присоединиться к приказам о на u.phone = o.phone группа по имя;

MS ACCESS запросов (не работает), который я судимое до сих пор:

Выбор количества (u.phone) в качестве ordernr, u.firstname, как FirstName, u.lastname, как LastName, U .address как добавить от пользователя u внутренние заявки на соединение o на u.phone = o.phone группа по первому;

дает мне сообщение об ошибке: ваш запрос не включает указанное выражение «LastName» в качестве части агрегатной функции.

Ждем ваших рекомендаций и/или предложений! Спасибо

ответ

2

Правильная версия MS Access является:

Select count(u.phone) as ordernr, u.firstname, u.lastname, u.address 
from [user] as u inner join 
    orders as o 
    on u.phone = o.phone 
group by u.firstname, u.lastname, u.address; 

Примечания:

  • user зарезервированное слово в MS Access.
  • join Операция должна включать inner.
  • as необходим для псевдонимов таблиц.
  • group by должен включать все столбцы (это SQL-вещь, истинная для всех баз данных, кроме MySQL).
+0

@HasS. , , Я только что обновил ответ. Я думаю, что у меня есть все атрибуты доступа. –

+0

Хм, это сработало, спасибо за вашу помощь, у меня есть много других запросов, которые я хочу преобразовать, и это помогло многим :) @ Gordon Linoff – HasS

+0

, если вы можете мне помочь и в этом, я получаю странное поведение, и Я думаю, что нет ничего плохого в этом вопросе: 'Выберите i.itemname, i.id, i.price как pricexitem, oil.quantity, (oil.quantity * i.price) в качестве цены от заказов, так как внутренний номер orderitemlist в качестве масла on oil.orderid = o.id внутренний элемент соединения как i на i.id = oil.itemid где o.id = 2; ' – HasS

2

Вы должны включить в пункте GROUP BY всех необобщенных поля, присутствующие в SELECT пункте:

Select count(u.phone) as ordernr, 
     u.firstname as firstname, 
     u.lastname as lastname , 
     u.address as addr 
from user u 
inner join orders o on u.phone = o.phone 
group by firstname, lastname, addr ; 
+0

Привет, Джордж, спасибо за ваш ответ, запрос, который вы написали, не работает, возможно, что «пользователь» зарезервирован из доступа ms, и он должен быть [пользователем], но все остальные части запроса полностью в порядке , С наилучшими пожеланиями – HasS