2014-01-06 4 views
0

Я написал запрос,Преобразование MS SQL Server Query в MySQL Query

SELECT dbo.boat.boatno, dbo.boat.boattype, dbo.staff.staffFirstName, dbo.staff.staffLastName,  
dbo.branch.branchAddress 
FROM dbo.boat INNER JOIN 
dbo.BoatOwner ON dbo.boat.OwnerNo = dbo.BoatOwner.OwnerNo INNER JOIN 
dbo.branch ON dbo.boat.BranchNo = dbo.branch.branchno INNER JOIN 
dbo.staff ON dbo.branch.branchno = dbo.staff.Branchno 
WHERE (dbo.branch.branchAddress LIKE '%LONDON%') 

Но это не работает в MYSQL QUERY

Как я преобразовать это в MYSQL QUERY?

+1

Какая ошибка? – user1336827

+0

# 1142 - команда SELECT запрещена для пользователя '' @ 'localhost' для таблицы 'boat' – user2164535

+1

Кажется, что вам нужны разрешения SELECT для вашего пользователя, в данном случае «@localhot». – user1336827

ответ

0

Вам нужно знать правильные имена таблиц для MySQL. Предполагая подобную структуру, я мог бы попробовать:

SELECT b.boatno, b.boattype, s.staffFirstName, s.staffLastName, br.branchAddress 
FROM boat b INNER JOIN 
    BoatOwner bo 
    ON b.OwnerNo = bo.OwnerNo INNER JOIN 
    branch br 
    ON b.BranchNo = br.branchno INNER JOIN 
    staff s 
    ON br.branchno = s.Branchno 
WHERE br.branchAddress LIKE '%LONDON%'; 

MySQL не использует три части именования, что SQL Server делает. В середине имени нет «схемы». Дополнительные периоды в именах столбцов, вероятно, являются одним из источников путаницы. Использование псевдонимов таблиц должно работать в обеих базах данных и сделать код более читаемым.

+0

Код работает, но его объявление на той же лодкеNo 11 раз? Несмотря на то, что BoatNo является уникальным (PK) – user2164535

+0

@ user2164535. , , Как я сказал в своем ответе, я не думаю, что это действительно тот запрос, который вы хотите. Вы задали другой вопрос, чтобы лучше описать, что вы пытаетесь сделать? –

0

Просто догадка от общих принципов, но, возможно, проще

SELECT A.boatno, A.boattype, D.staffFirstName, D.staffLastName, C.branchAddress 
FROM dbo.boat A, dbo.BoatOwner B, dbo.branch C, dbo.staff D 
WHERE B.OwnerNo = A.OwnerNo AND C.branchno = A.BranchNo AND D.Branchno = C.branchno 
AND C.branchAddress LIKE '%LONDON%' 

может работать.

Для начала, убедитесь также, что вы можете SELECT из dbo.boat, dbo.BoatOwner, dbo.branch и dbo.staffс помощью PhpMyAdmin среды. Иногда простые вещи нас преследуют ...

+0

Код работает, но его включение в ту же лодку не 11 раз? Несмотря на то, что BoatNo является уникальным (PK) – user2164535

+0

В первоначальном запросе не было оператора GROUP BY, так что да, вы можете получить несколько строк с повторением уникального/первичного ключа. –

0
SELECT b.boatno, b.boattype, s.staffFirstName, s.staffLastName, br.branchAddress 
FROM boat b INNER JOIN 
BoatOwner bo 
ON b.OwnerNo = bo.OwnerNo INNER JOIN 
branch br 
ON b.BranchNo = br.branchno INNER JOIN 
staff s 
ON br.branchno = s.Branchno 
WHERE br.branchAddress LIKE '%LONDON%'; 
GROUP BY b.boatno 

Не так ли?