如何找到另一张桌子上的所有孩子?

时间:2017-12-04 14:04:18

标签: mysql join

我有两张桌子

CATEGORY

id   category     parent_id
1    Electronic
2    Furniture
3    Phone        1
4    LCD          1
5    Watch        1
6    Desk         2

ORDER

id customer product      category_id
1  John     Smartphone   3
2  Marry    Montior      4
3  King     Wood-Desk    6

我想通过child_id找到所有电子结果。

喜欢这个..

SELECT product FROM order WHERE category_id = (category.id = 1)

RESULT

product
Smartphone
Monitor

MySQL中是否有这样的表达式?

2 个答案:

答案 0 :(得分:0)

您必须使用INNER JOIN

SELECT order.product 
FROM order
INNER JOIN category
ON order.category_id = category.id
WHERE category.parent_id = 1

ON关键字显示了这些表之间要比较的列。当您进行JOIN时,您需要将表名放在以“。”分隔的列名之前。因为在两个表中都可以存在一个具有相同名称的列。

答案 1 :(得分:0)

您可以使用join。您还需要使用反引号封装order表名,因为order是保留的(或者您可以重命名该表以避免每次封装)。

SELECT product FROM `order` as o 
join category as c 
on o.category_id = c.id 
WHERE c.parent_id = 1

on告诉数据库要向join提供哪些数据。 as创建别名,因此不需要每次都写出完整的表名。 (as也是可选的,我发现它更容易阅读,FROM `order` o会是相同的)

另一种方法可能是使用子查询:

SELECT product 
FROM `order` 
WHERE category_id in (SELECT id FROM CATEGORY where parent_id = 1)