简体   繁体   English

MySQL Select 语句使用相同的表和列但别名不同的名称

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

I am working on a site I have inherited and I do not know MySQL that well.我在一个我继承的网站上工作,但我不太了解 MySQL。 I have copied this from an Access query and converted it to MySQL but I get an error:我从 Access 查询中复制了它并将其转换为 MySQL,但出现错误:

Unknown column 'CornerAbutTo1' in 'field list' “字段列表”中的未知列“CornerAbutTo1”

This is my converted statement:这是我转换后的声明:

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

I know there is a bunch of stuff here but it seems to be stuck here:我知道这里有很多东西,但似乎卡在了这里:

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,

Is the way the table and columns are represented here correct?此处表和列的表示方式是否正确? Can you call the same table and just add an underscore with a number as make it an alias?你能调用同一个表并添加一个带数字的下划线作为别名吗?

Thanks!谢谢!

Thanks to Selvin for setting me on the right track.感谢 Selvin 让我走上正轨。 I got rid of the alias's and I changed this:我摆脱了别名,我改变了这个:

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,

to:到:

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,

That worked.那奏效了。 Thanks!谢谢!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM