【问题标题】:SQL Query Search 2 tablesSQL 查询搜索 2 个表
【发布时间】:2017-01-03 13:53:09
【问题描述】:

您好,我一直在尝试搜索两张表并获得所需的结果

表名:phpvms_airframe_qual

id    pilotid   airframe   icao
0       1001      name     tutr
1       1001      name     eufi
2       1002      name     tutr
3       1002      name     king
4       1001      name     a400

表名:phpvms_aircraft

id    fullname   icao    registration
0       tutor    tutr        G-BXEX
1      typhoon   eufi        ZJ932
2       tutor    tutr        G-DXRT
3      kingair   king        ZZ990
4       atlas    a400        ZM400

我需要做的是获取飞机列表,但只显示用户有资格的飞机。因此,用户 1001 将显示示例中的以下内容:

id    fullname   icao    registration
0       tutor    tutr        G-BXEX
1      typhoon   eufi        ZJ932
2       tutor    tutr        G-DXRT
4       atlas    a400        ZM400

和 1002 将显示以下内容:

id    fullname   icao    registration
0       tutor    tutr        G-BXEX
2       tutor    tutr        G-DXRT
3      kingair   king        ZZ990

我试过了:

SELECT * FROM `phpvms_aircraft` WHERE phpvms_aircraft.icao = (SELECT icao FROM `phpvms_airframe_qual` WHERE pilotid = '1001')

但是我得到错误任何想法如何做到这一点

谢谢

【问题讨论】:

  • MySQL 或 SQL-Server,是哪个?
  • = (SELECT ...) 应该是 IN (SELECT ...)

标签: mysql


【解决方案1】:

这应该可以,但我无法对其进行测试。让我知道是否没有以及出现了什么错误。

SELECT * FROM phpvms_aircraft
    INNER JOIN phpvms_airframe_qual ON phpvms_airframe_qual.icao = phpvms_aircraft.icao
    WHERE phpvms_airframe_qual.pilot_id = 1001;

【讨论】:

  • 我刚刚尝试 SELECT * FROM phpvms_aircraft INNER JOIN phpvms_airframe_qual ON phpvms_airframe_qual.icao = phpvms_aircraft.icao WHERE phpvms_airframe_qual.pilotid = 1001;它提出了 #1267 - 非法混合排序规则 (latin1_swedish_ci,IMPLICIT) 和 (latin1_general_ci,IMPLICIT) 用于操作 '='
  • @ScottDaniels 看起来您的表格有不同的排序规则。 stackoverflow.com/a/5747047/2696950 会告诉你如何解决它
  • 谢谢 这是问题让它现在可以工作了 非常感谢!! :)
  • 为什么要接受有语法错误的答案?我不明白。
  • @Strawberry 他一定注意到了我犯的错误并在他测试查询时修复了它。也许他只是看到了我的答案并根据我的答案编写了自己的查询,但他忽略了我的错误。将来,也许您可​​以对我的答案进行编辑以修复错误。不过我现在修好了,谢谢指出。
【解决方案2】:

你可以做一个内部连接来得到这个答案:

 select * from phpvms_aircraft inner p join phpvms_airframe_qual pq on p.icao = pq.icao where ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    • 2016-03-08
    • 1970-01-01
    • 2018-12-19
    相关资源
    最近更新 更多