【发布时间】:2019-06-15 04:51:55
【问题描述】:
我有一个带有建筑物名称的表,例如 A、B、C。这些建筑物名称可以重复。我有另一列有发言权。例如第 1 层,第 2 层。同样,每个建筑物都可以有多个第 1 层。第三列有对象存在,如电视、砖块、风扇。 我想检查建筑物与相应楼层的每个组合,例如 A 楼 - 1 楼,A 楼 - 2 楼,如果存在对象“砖”,则“墙”必须存在。
示例数据: 对于每个建筑物和位置,如果存在“WALL”,则必须存在“WINDOW”、“WINDOW1”或“WINDOW2”,ELSE FLAG
BUILDING LOCATION OBJECT
A FLOOR1 WINDOW1
A FLOOR1 WINDOW
A FLOOR1 WINDOW2
A FLOOR2 WALL
B FLOOR1 WALL
C FLOOR1 WALL
C FLOOR1 WINDOW
期望的输出
BUILDING LOCATION ACTION
A FLOOR2 FLAG
B FLOOR1 FLAG
我尝试过使用 GROUP BY、DISTINCT、WHERE EXISTS,但我似乎无法提出正确的逻辑。
【问题讨论】:
-
@forpas 这是新问题!
-
你的previous question有什么不同?
-
@PaulSpiegel 我想比较以检查 Window、Window1、Window2 等值的列表。至少应该存在一个。我已经更新了上一个。但是回到最初的问题并创建了这个
-
我不明白“DESIRED OUPUT”如何对应于“对于每个建筑物和位置,如果存在'WALL','WINDOW','WINDOW1'或'WINDOW2'必须存在,ELSE FLAG ”。另外 - “ELSE FLAG”是什么意思?
-
对于 A - FLOOR1,没有墙,所以没关系。对于 A-FLOOR2,存在一堵墙,因此必须存在任何一个窗户。但它不会让您选择该记录并在新列中添加“FLAG”。 B FLOOR1 相同。在 C FLOOR 1 的情况下,有一面墙,但也有一个窗户,因此不需要标记。 @PaulSpiegel
标签: mysql