簡體   English   中英

MySQL Select 語句使用相同的表和列但別名不同的名稱

[英]MySQL Select Statement using the same table and column but different names for an alias

我在一個我繼承的網站上工作,但我不太了解 MySQL。 我從 Access 查詢中復制了它並將其轉換為 MySQL,但出現錯誤:

“字段列表”中的未知列“CornerAbutTo1”

這是我轉換后的聲明:

SELECT tblMasonry.Site, tblMasonry.MUNum, trelMUSU.SUNum,
        trelMUFe.FeNum, tlkpFeTyp.FeTyp, tlkpCardinalDirection.Dir,
        tblMasonry.Dir, tlkpCardinalDirection.Sort, tlkpMasonryTyp.MasonryTyp,
        tblMasonry.Face, tblMasonry.HtMax, tblMasonry.HtMin,
        tblMasonry.NumCourses, tblMasonry.Complete, tblMasonry.HtInf,
        tblMasonry.PctPecked, tblMasonry.PctGround, tblMasonry.PctFlaked,
        tblMasonry.PctUnshp, tblMasonry.ShapingComm, tblMasonry.PctBlock,
        tblMasonry.PctTabular, tblMasonry.PctIrreg, tblMasonry.ShapesComm,
        tblMasonry.Foundation, tblMasonry.Chinking, tblMasonry.Mortar,
        tblMasonry.PctPlaster, tblMasonry.Material, tblMasonry.Coursing,
        tblMasonry.CrossSec, tblMasonry.Comm, 
        tlkpCardinalDirection_1.Dir AS CornerAbutTo1,
        tlkpCardinalDirection_2.Dir AS CornerAbutTo2,
        tlkpCardinalDirection_3.Dir AS CornerAbutBy1,
        tlkpCardinalDirection_4.Dir AS CornerAbutBy2,
        tlkpCardinalDirection_5.Dir AS CornerTiedTo1,
        tlkpCardinalDirection_6.Dir AS CornerTiedTo2,
CASE
WHEN CornerAbutTo1 AND CornerAbutTo2 IS NULL THEN 'no data'
WHEN CornerAbutTo1 IS NOT NULL AND CornerAbutTo2 IS NULL THEN CornerAbutTo1
ELSE CONCAT( CornerAbutTo1, ' ', 'and', ' ', CornerAbutTo2)
END AS CornersAbutTo,

CASE
WHEN CornerAbutBy1 AND CornerAbutBy2 IS NULL THEN 'no data'
WHEN CornerAbutBy1 IS NOT NULL AND CornerAbutBy2 IS NULL THEN CornerAbutBy1
ELSE CONCAT( CornerAbutBy1, ' ', 'and', ' ', CornerAbutBy2)
END AS CornersAbutBy,
    
CASE
WHEN CornerTiedTo1 AND CornerTiedTo2 IS NULL THEN 'no data'
WHEN CornerTiedTo1 IS NOT NULL AND CornerTiedTo2 IS NULL THEN CornerTiedTo1
ELSE CONCAT( CornerTiedTo1, ' ', 'and', ' ', CornerTiedTo2)
END AS CornersTiedTo

FROM ((tlkpMasonryTyp RIGHT JOIN (((((((tblMasonry LEFT JOIN tlkpCardinalDirection ON tblMasonry.Dir = tlkpCardinalDirection.DirCode)
        LEFT JOIN tlkpCardinalDirection AS tlkpCardinalDirection_1 ON tblMasonry.CornerAbutTo_1 = tlkpCardinalDirection_1.DirCode)
        LEFT JOIN tlkpCardinalDirection AS tlkpCardinalDirection_2 ON tblMasonry.CornerAbutTo_2 = tlkpCardinalDirection_2.DirCode)
        LEFT JOIN tlkpCardinalDirection AS tlkpCardinalDirection_3 ON tblMasonry.CornerAbutBy_1 = tlkpCardinalDirection_3.DirCode)
        LEFT JOIN tlkpCardinalDirection AS tlkpCardinalDirection_4 ON tblMasonry.CornerAbutBy_2 = tlkpCardinalDirection_4.DirCode)
        LEFT JOIN tlkpCardinalDirection AS tlkpCardinalDirection_5 ON tblMasonry.CornerTiedTo_1 = tlkpCardinalDirection_5.DirCode)
        LEFT JOIN tlkpCardinalDirection AS tlkpCardinalDirection_6 ON tblMasonry.CornerTiedTo_2 = tlkpCardinalDirection_6.DirCode)
        ON tlkpMasonryTyp.MasonryTypCode = tblMasonry.MasonryTypCode)
        LEFT JOIN (trelMUFe
            LEFT JOIN (tlkpFeTyp RIGHT JOIN tblFeature ON tlkpFeTyp.FeTypCode = tblFeature.FeTypCode)
            ON (trelMUFe.Site = tblFeature.Site)
            AND (trelMUFe.SUNum = tblFeature.SUNum)
            AND (trelMUFe.FeNum = tblFeature.FeNum))
            ON (tblMasonry.MUNum = trelMUFe.MUNum)
            AND (tblMasonry.Site = trelMUFe.Site))
            LEFT JOIN trelMUSU ON (tblMasonry.MUNum = trelMUSU.MUNum) AND (tblMasonry.Site = trelMUSU.Site)
WHERE (((tblMasonry.Site)='1825') AND ((trelMUSU.SUNum)='7-n'))
ORDER BY tblMasonry.MUNum

我知道這里有很多東西,但似乎卡在了這里:

tlkpCardinalDirection_1.Dir AS CornerAbutTo1,
tlkpCardinalDirection_2.Dir AS CornerAbutTo2,
tlkpCardinalDirection_3.Dir AS CornerAbutBy1,
tlkpCardinalDirection_4.Dir AS CornerAbutBy2,
tlkpCardinalDirection_5.Dir AS CornerTiedTo1,
tlkpCardinalDirection_6.Dir AS CornerTiedTo2,

此處表和列的表示方式是否正確? 你能調用同一個表並添加一個帶數字的下划線作為別名嗎?

謝謝!

感謝 Selvin 讓我走上正軌。 我擺脫了別名,我改變了這個:

CASE
WHEN CornerAbutTo1 AND CornerAbutTo2 IS NULL THEN 'no data'
WHEN CornerAbutTo1 IS NOT NULL AND CornerAbutTo2 IS NULL THEN CornerAbutTo1
ELSE CONCAT( CornerAbutTo1, ' ', 'and', ' ', CornerAbutTo2)
END AS CornersAbutTo,

到:

CASE
WHEN tlkpCardinalDirection_1.Dir AND tlkpCardinalDirection_2.Dir IS NULL THEN 'no data'
WHEN tlkpCardinalDirection_1.Dir IS NOT NULL AND tlkpCardinalDirection_2.Dir IS NULL THEN tlkpCardinalDirection_1.Dir
ELSE CONCAT( tlkpCardinalDirection_1.Dir, ' ', 'and', ' ', tlkpCardinalDirection_2.Dir)
END AS CornersAbutTo,

那奏效了。 謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM