mysql - 一行有 2 个 ID,另一行有名字和姓氏。如何从其他表接收名字

标签 mysql sql join subquery

我想,从一个月以来,我一直在努力进行 1 次练习,希望你能帮助我。我已经以多种方式尝试了 from、with 或 join 表中的子查询,但没有收到正确的结果。

好的。 Table1 中的一行存储如下信息:

  • 客户 ID
  • 名字
  • 拉斯塔姆
  • 服务员编号

Table2 中的一行存储如下信息:

  • userID(顾客和服务员就是用户)
  • 名字
  • 姓氏

I've attaced picture how those tables look

我是 SQL 新手,但我的看法是:

WITH waiter AS(
  SELECT
   waiter_id,
   firstname,
   lastname
 FROM Table1
 JOIN Table2 ON Table1.waiter_id = Table2.user_id
 )
 SELECT
  client_id,
  firstname as Firstname_client,
  lastname as Lastname_client,
  waiter_id,
  waiter.firstname as Firstname_waiter,
  waiter.lastname as Lastname_waiter
 FROM Table1
 JOIN waiter ON Table1.waiter_id = waiter.waiter.id

如果有任何线索,我将非常感激!

最佳答案

您可以尝试此查询。只需使用别名并JOIN

TestDLL

CREATE TABLE Table1(
    client_id int,
    firstname varchar(50),
    lastname  varchar(50),
    waiter_id int
);
INSERT INTO Table1 values (1,'Andrew','x',5);
INSERT INTO Table1 values (2,'Chris','xx',6);
INSERT INTO Table1 values (3,'Anna','xxx',7);
INSERT INTO Table1 values (4,'Julia','xxxx',8);

CREATE TABLE Table2(
    user_id int,
    firstname varchar(50),
    lastname  varchar(50)
);

INSERT INTO Table2 values (1,'Andrew','x');
INSERT INTO Table2 values (2,'Chris','xx');
INSERT INTO Table2 values (3,'Anna','xxx');
INSERT INTO Table2 values (4,'Julia','xxxx');
INSERT INTO Table2 values (5,'Mat','xxxxx');
INSERT INTO Table2 values (6,'Kathy','xxxxxx');
INSERT INTO Table2 values (7,'Pual','xxxxxxx');
INSERT INTO Table2 values (8,'John','xxxxxxxx');

查询

SELECT t1.client_id ,
        t1.firstname AS Firstance_client,
        t1.lastname as Lastname_Client,
        t1.waiter_id,
        t2.firstname as  Firstname_waiter ,
        t2.lastname as Lastname_Waiter
FROM Table1 t1 
inner join Table2 t2 on t1.waiter_id = t2.user_id

sqlfiddle

[结果]:

| client_id | Firstance_client | Lastname_Client | waiter_id | Firstname_waiter | Lastname_Waiter |
|-----------|------------------|-----------------|-----------|------------------|-----------------|
|         1 |           Andrew |               x |         5 |              Mat |           xxxxx |
|         2 |            Chris |              xx |         6 |            Kathy |          xxxxxx |
|         3 |             Anna |             xxx |         7 |             Pual |         xxxxxxx |
|         4 |            Julia |            xxxx |         8 |             John |        xxxxxxxx |

关于mysql - 一行有 2 个 ID,另一行有名字和姓氏。如何从其他表接收名字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51474591/

相关文章:

php - cakephp 从数据库中获取数据

php - PHP 中的 SQL SELECT 语句

MySQL - 正确的人口

mysql - 使用额外的查询和插入逻辑更新 MySQL 触发器

javascript - Bcrypt.compareSync 总是返回 false

sql - 如何处理 "Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32)."

SQL Server 2008 Express Edition - 如何创建序列

database - 如何在 Cakephp 的分页函数中使用 OR 条件?

php - 使用 JOIN 显示 friend 的帖子

php - 单个查询以获取过去 7 天的个人计数