gpt4 book ai didi

mysql - 在 SQL SELECT 语句中创建循环直到链断开

转载 作者:搜寻专家 更新时间:2023-10-30 20:55:43 24 4
gpt4 key购买 nike

世界各地发生的事件的假设数据库。

事件

event_id | event_name1        | Great Wall Party2        | Times Square Dance3        | Sydney Blowout

PLACE

place_id | place_name54       | Times Square55       | Manhattan56       | New York City57       | New York State58       | USA

EVENTPLACE

eventid | placeid2       | 54

RELATEDPLACES

rel_placeid1 | rel_placeid254           | 5555           | 5656           | 5757           | 58

If I display the event, Times Square Dance, I’d like to display all the places that appear up the chain of its associated places via the RELATEDPLACES table (i.e. Times Square, Manhattan, New York City, New York State, USA). Likewise, if I call all events for USA, I’d like the Times Square dance to be listed, given its EVENTPLACE (Times Square) appears at the bottom of the RELATEDPLACES chain of associations starting with USA.

I think I need to create an inner loop within my SQL command so that it keeps performing until there is a break in the chain. So far (using the first of the two above examples) I have:-

SELECT place_nm FROM eventplace
INNER JOIN relatedplaces ON placeid = rel_placeid1
INNER JOIN place ON rel_placeid2 = place_id
[where the loop should begin:
INNER JOIN relatedplaces ON place_id = rel_placeid1
INNER JOIN place ON rel_placeid2 = place_id
end loop]
WHERE eventid = ‘2’;

这很复杂,因为我需要为每个循环使用不同的表别名,这意味着我无法在开始的 SELECT 语句中声明我想收集同一列中的所有 place_name 数据。

我不确定我正在努力实现的目标是否有可能实现,我目前的后备解决方案是在 RELATEDPLACES 表中列出时代广场的所有相关地点,而不仅仅是下一个最大的地点(曼哈顿),但是这似乎是更好的解决方案(并且还可以节省数据库空间)。

任何人都可以建议我可能需要使用的 SQL SELECT 命令吗?干杯!

最佳答案

一个很有趣的问题。但问题是 MySQL 目前不允许递归查询。你有两个选择:

  1. 确定要深入的 RelatedEvents 级别,并为其创建查询(使用 excel 或小型 C 代码)
  2. 使用程序即时生成和执行查询;从程序递归地进行数据库查询。我建议这是最好的选择,尽管需要重复的数据库访问。

关于mysql - 在 SQL SELECT 语句中创建循环直到链断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21658272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com