【问题标题】:3 mysql table joining3 mysql表连接
【发布时间】:2020-07-15 16:21:58
【问题描述】:

我有 3 个 MySQL 表,下面是示例表

1.districts table(primary )


+---------+----------------+
|   ID    |   District_name|
+--------------------------+
|  1      |   Dhaka        |
|  2      |   Madaripur    |
|  3      |   chittagong   |
|  4      |   khulna       |
|  5      |   barishal     |
|  6      |   jesshore     |
+---------+----------------+


2.sub_district table(Depends on districts table)

+-----+--------------+---------------------+
|ID   |  district_id |    sub_district_name|
|1    |    1         |      2nd sub 1      |
|2    |    1         |      2nd sub 2      |
|3    |    1         |      2nd sub 3      |
|4    |    3         |      2nd sub 4      |
|5    |    3         |      2nd sub 5      |
|6    |    3         |      2nd sub 6      |
|7    |    4         |      2nd sub 7      |
|8    |    4         |      2nd sub 8      |
|9    |    5         |      2nd sub 9      |
|10   |    6         |      2nd sub 10     |
|     |              |                     |
+-----+--------------+---------------------+

3. upazila table( depends on district table)
+------+-------------------+-------------------+
|Id    |  sub_district_id  |     Upazila_name  |
| 1    |      1            |       Upazila 1   |
| 2    |      1            |       Upazila 2   |
| 3    |      3            |       Upazila 3   |
| 4    |      3            |       Upozila 4   |
| 5    |      2            |       Upozila 5   |
| 6    |      2            |       Upozila 6   |
| 7    |      5            |       Upozila 7   |
| 8    |      5            |       Upozila 8   |
| 9    |      4            |       Upozila 9   |
| 10   |      4            |       Upozila 10  |
+------+-------------------+-------------------+

现在我需要做的是我有一个地区 id 并且我必须查询该地区下的所有 upazila。

假设我的地区 ID 为 1。

所以我的输出数据会是这样的

Output data

+-----------------------------------------+
|ID(Upozila)|sub_district_id|Upozila_name |
|  1        |  1            | Upozila 1   |
|  2        |  1            | Upozila 2   |
|  5        |  2            | Upozila 5   |
|  6        |  2            | Upozila 6   |
|           |               |             |
|           |               |             |
+-----------+---------------+-------------+

这是转帖,我看到了与此类似的旧帖子,但我太困惑了,无法适用于我的情况。

如果您根据我的示例数据编写一个示例,那将非常有帮助。感谢您

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    可以像下一个 sql 一样连接 3 个表:

    SELECT
        u.ID AS Upozila_ID, sd.sub_district_id, u.Upozila_name
    FROM upazila AS u
    LEFT JOIN sub_district AS sd
        ON u.sub_district_id = sd.ID
    LEFT JOIN districts AS d
        ON sd.district_id = d.ID
    WHERE d.ID = XYZ;
    

    现在根据您提供的地区 ID 替换 XYZ

    【讨论】:

    • tnx 很多,发布后我正在做最后一次尝试,我通过使用 join 语句成功。顺便说一句,左连接和只连接有什么不同?
    • 太好了。如果不添加加入条件,基本上 LEFT JOIN 和 JOIN 是相同的。 Othetwise LEFT join 确保从左/第一个表中检索相同数量的行,并根据条件避免重复行。如果我的回答有帮助,请采纳我的回答。
    • 这是一个 INNER JOIN,正如 EXPLAIN [your query] 后跟 SHOW WARNINGS; 所展示的那样
    猜你喜欢
    • 2017-08-20
    • 1970-01-01
    • 2013-04-21
    • 2023-03-03
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多