【问题标题】:how to limit row content in multiple JOIN如何限制多个JOIN中的行内容
【发布时间】:2020-06-17 13:25:27
【问题描述】:

更新到草莓推荐的内容

我正在开发一个处理游戏卡的数据库,并创建一个视图。

select 
kort_info.id, 
kk_b.Antall as 'kk_b.Antall',  
kk_b.Kjop_id as 'kk_b.Kjop_id', 
kk_c.Antall as 'kk_c.Antall',
kk_c.Kjop_id as 'kk_c.Kjop_id'
from kort_info
left join kort_kjopt kk_b on kort_info.id = kk_b.kort_id and kk_b.kort_type like 'b' 
left join kort_kjopt kk_c on kort_info.id = kk_c.kort_id and kk_c.kort_type like 'c' 
+----------------+--------------+---------------+--------------+---------------+
|                                  Result                                      |
+----------------+--------------+---------------+--------------+---------------+
| id             |  kk_b.Antall |  kk_b.Kjop_id |  kk_c.Antall |  kk_c.Kjop_id |
+----------------+--------------+---------------+--------------+---------------+
| 5879           | 1            | 23            | 2            | 18            |
| 5902           | 3            | 23            | 4            | 23            |
+----------------+--------------+---------------+--------------+---------------+
|                                Desired result                                |
+----------------+--------------+---------------+--------------+---------------+
| id             |  kk_b.Antall |  kk_b.Kjop_id |  kk_c.Antall |  kk_c.Kjop_id |
+----------------+--------------+---------------+--------------+---------------+
| 5879           |              |               | 2            | 18            |
| 5879           | 1            | 23            |              |               |
| 5902           | 3            | 23            | 4            | 23            |
+----------------+--------------+---------------+--------------+---------------+

我的问题是如何多次加入同一张表。我的问题 是 JOIN 处理 Kort_kjopt.kjop_id 的方式。这是我不能的值 控制 Kort_info。

我有一张关于卡片信息的表格。 Kort_info.ID 用于 识别卡片。

+--------------+
| Kort_info.ID |
+--------------+
|         5879 |
|         5902 |
+--------------+

Kort_kjopt 是关于已购买卡片的表格 Kort_kjopt.Kort_id 连接到 kort_info.ID Kort_kjopt.kort_type 决定它连接到哪个 JOIN Kort_kjopt.kjop_id 是问题出现的地方。

+----------+------------+----------+---------+
|                    Kort_kjopt              |
+----------+------------+----------+---------+
|  kort_id |  kort_type |  Kjop_id |  Antall |
+----------+------------+----------+---------+
|     5879 | B          |       23 |       1 |
|     5879 | C          |       18 |       2 |
|     5902 | B          |       23 |       3 |
|     5902 | C          |       23 |       4 |
+----------+------------+----------+---------+

kjop_id 仅存在于 Kort_kjopt 中,不能从 Kort_info

我需要限制 Kort_kjopt.kjop_id 可以在同一 排。我怎样才能获得相同的价值 kk_b.Kjop_id 和 kk_c.Kjop_id 连续

这与继承无关

card_id 5879 分为两个不同的行

【问题讨论】:

    标签: mysql join left-join


    【解决方案1】:

    我发现最好将 3 个 kort_kjopt 连接到一个 kort_kjopt,后者作为它们之间的链接。

    SELECT 
    kort_kjopt.kort_id,
    kort_kjopt.Kjop_id,
    kk_a.Antall as 'kk_a.Antall',  
    kk_a.Kjop_id as 'kk_a.Kjop_id', 
    kk_b.Antall as 'kk_b.Antall',  
    kk_b.Kjop_id as 'kk_b.Kjop_id', 
    kk_c.Antall as 'kk_c.Antall',
    kk_c.Kjop_id as 'kk_c.Kjop_id'
    FROM 
    poketech.kort_kjopt
    left join kort_kjopt kk_a on kk_a.kort_id = kort_kjopt.kort_id and kk_a.Kjop_id = kort_kjopt.Kjop_id and kk_a.kort_type = 'A'
    left join kort_kjopt kk_b on kk_b.kort_id = kort_kjopt.kort_id and kk_b.Kjop_id = kort_kjopt.Kjop_id and kk_b.kort_type = 'B'
    left join kort_kjopt kk_c on kk_c.kort_id = kort_kjopt.kort_id and kk_c.Kjop_id = kort_kjopt.Kjop_id and kk_c.kort_type = 'C'
    where kort_kjopt.kort_id in (5879,5902)
    group by kort_kjopt.Kjop_id, kort_kjopt.kort_id
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多