【问题标题】:MySQL - Selecting data from three different tablesMySQL - 从三个不同的表中选择数据
【发布时间】:2015-01-13 16:58:20
【问题描述】:

我正在尝试从三个不同的表中选择数据。我将如何加入这些表以进行正确的查询?

****customers****
--------------------------
id            full_name
54            Matt Damon
53            Jimmy Kimmel

****samples****
--------------------------
id            rma_id
57            USARP011315-25
56            USARP011315-24

****early_ships****
--------------------------
customer_id   sample_id   shipping_carrier
54            57          UPS
53            56          FedEx

这是我一直在运行的查询,但我得到了 0 个结果。这是我一直在关注的教程:http://javarevisited.blogspot.com/2012/11/how-to-join-three-tables-in-sql-query-mysql-sqlserver.html

SELECT samples.rma_id, customers.full_name, early_ships.shipping_carrier, 
FROM customers c JOIN early_ships e ON c.id = e.customer_id
JOIN samples s ON e.sample_id = s.id

【问题讨论】:

  • 你能从这三个表中看出你想要的结果是什么吗?
  • 这对我来说很好。我不认为这是第一行末尾的额外逗号?
  • 向我们展示真正的查询,如果上面不是那个...
  • 我想从上面的每个表中获取两行。一旦我将原始名称更改为我创建的表别名,问题就解决了。

标签: mysql multiple-tables


【解决方案1】:

您必须在SELECT 子句中使用表别名。请检查我为您创建的这个小提琴。它运行良好。 http://sqlfiddle.com/#!2/49462/8

【讨论】:

    【解决方案2】:

    两个问题:

    1. SELECT 子句末尾有一个额外的逗号。
    2. 在 FROM..JOIN 子句中,您提供了昵称,但您尝试在 SELECT 子句中使用原始名称。

    试试这个:

    SELECT s.rma_id, c.full_name, e.shipping_carrier
    
    FROM customers c
    JOIN early_ships e
        ON c.id = e.customer_id
    JOIN samples s
        ON e.sample_id = s.id
    

    (为便于阅读添加了空格)

    【讨论】:

    • 对于 SQL 别名,一旦我创建了一个别名,我假设我不能再使用原来的名称,那么正确吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    相关资源
    最近更新 更多