gpt4 book ai didi

MySQL 查询 : how to construct query which contains name of the event and name of the corresponding place

转载 作者:行者123 更新时间:2023-11-29 05:43:30 24 4
gpt4 key购买 nike

我有两个 InnoDB 表:'places' 和 'events'。一个地方可以有很多事件,但是事件可以在不进入地方的情况下创建。在这种情况下,事件的外键为 NULL。

表格的简化结构如下所示:

CREATE TABLE IF NOT EXISTS `events` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_bin NOT NULL,
`places_id` int(9) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_events_places` (`places_id`),
) ENGINE=InnoDB;
ALTER TABLE `events`
ADD CONSTRAINT `events_ibfk_1` FOREIGN KEY (`places_id`) REFERENCES `places` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION;

CREATE TABLE IF NOT EXISTS `places` (
`id` int(9) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=InnoDB;

问题是,如何构造包含事件名称和相应地点名称的查询(或者没有值,以防没有指定地点?)

我可以用两个查询来做到这一点,但是我明显地把有位置的事件和没有位置的事件分开了。

最佳答案

使用外部连接

SELECT events.col1, events.col2, places.name
FROM events LEFT OUTER JOIN places
ON events.places_id = places.id

在 OUTER JOIN 中,左侧(或右侧,对于 RIGHT OUTER JOIN)的表控制结果集。在可以找到匹配项的地方提供来自其他表的匹配值,否则这些值为 NULL。

关于MySQL 查询 : how to construct query which contains name of the event and name of the corresponding place,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4609500/

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