2014-01-06 91 views
0

我寫了一個查詢,轉換MS SQL Server查詢在MySQL查詢

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查詢工作

我怎麼能轉換成MySQL查詢呢?

+1

最新錯誤? – user1336827

+0

#1142 - 表'boat'的用戶'@'localhost'被拒絕的SELECT命令 – 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

該代碼的作品,但其上市相同的船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%' 

可能工作。

首先,確保還可以從SELECTdbo.boatdbo.BoatOwnerdbo.branchdbo.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 

這不夠嗎?