MYSQL 特定的 SELECT 语句

标签 mysql sql join

对不起,但我不知道如何用正确的词来说明我的问题(这就是为什么我不知道该将什么放入 google 或在 mysql-doc 中查找)。我尝试在这里简化和描述我的问题。我想解决方案很简单,但我找不到。

我有两张 table 。第一个只包含一些人。

| id | name    | lastname   | age | size |
| 1  | 'max'   | 'foo'      | 12  | 156  |
| 2  | 'john'  | 'bar'      | 20  | 191  |
| 3  | 'jane'  | 'doe'      | 17  | 175  |

第二个描述了谁给了谁礼物。 (这个例子只是出于我的想法,以明确我的问题是什么)

| id | gift_description | from_kid | to_kid | price |
| 1  | 'bow and arrow'  | 2        | 1  | 40$   |
| 2  | 'rc car'         | 3        | 2  | 20$   |
| 3  | 'baby doll'      | 1        | 3  | 5$    |

现在我正在寻找一个 SELECT 语句,它给我 child 的名字,例如:

| id | kid_a | kid_b | gift_description |
| 1  | john  | max   | 'bow and arrow'  | 
| 2  | jane  | john  | 'rc car'         |
| 3  | max   | jane  | 'baby_doll'      |

我试过类似的方法:

SELECT id, gift_description, name AS kid_a, name AS kid_b 
FROM TABLE gifts, persons
WHERE (gifts.from_kid = persons.name 
     AND gifts.to_kid = persons.name);

当然这行不通,但我错过了最后一 block 。 (就您所见,我对 MYSQL 不是很满意)。

最佳答案

你用一个连接来做到这一点,实际上是两个连接:

select t2.id, tfrom.name as kid_a, tto.name as kid_b, t2.gift_description
from secondtable t2 join
     firsttable tfrom
     on t2.`from` = t1.id join
     firsttable tto
     on t2.`to` = t2.id;

关于MYSQL 特定的 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24995649/

相关文章:

php - PHP 预准备语句调用的存储过程内部的预准备语句

sql - 比较空值时的奇怪行为 SQL

MySQL 使用 WHERE 和空值进行连接

MYSQL - 如何优化 3 个 LEFT 连接表?

java - 无法执行语句; SQL [不适用];约束[主要];嵌套异常是 org.hibernate.exception.ConstraintViolationException

mysql - GROUP BY 与 sql_mode=only_full_group_by 不兼容'

php - 在php中获取mysql用户定义的变量

sql - 比较记录集中的 2 个连续行

mysql - 删除查询-mysql

mysql - 连接表多种可能性选择一个sql