gpt4 book ai didi

php - MySQL 查找连接 3 个表

转载 作者:行者123 更新时间:2023-11-30 01:22:17 24 4
gpt4 key购买 nike

我有 3 个表、位置、查找并排除以下信息...

位置表

+----+--------------+
| id | location |
+----+--------------+
| 1 | Location a |
| 2 | Location b |
| 3 | Location c |
| 5 | Location d |
| 6 | Location e |
| 7 | Location f |
| 8 | Location g |
| 9 | Location h |
+----+--------------+

查找表

+----+-------------+------+
| id | location_id | code |
+----+-------------+------+
| 1 | 2 | PR6 |
| 2 | 2 | PR7 |
| 3 | 2 | PR9 |
| 4 | 5 | WA2 |
| 6 | 8 | WA3 |
+----+-------------+------+

排除表格

+----+-------------+------+
| id | location_id | code |
+----+-------------+------+
| 1 | 2 | PR5 |
| 2 | 2 | PR8 |
+----+-------------+------+

这些表用于基本的邮政编码查找。我需要创建一些 SQL,以便可以使用邮政编码完成搜索,但我需要考虑任何排除的邮政编码,例如...如果我要搜索“PR7”,我会得到“位置 B”作为结果但如果我要搜索 PR5 或 PR8,我不会得到“位置 B”,因为这些位于排除表中。这是我到目前为止所拥有的......

SELECT
lookup.*, exclude.`code` as exclude, location.location
FROM lookup
LEFT JOIN
exclude
ON lookup.location_id = exclude.location_id
LEFT JOIN
location
ON location.location = lookup.location_id
WHERE lookup.`code` LIKE 'PR%' AND (exclude.`code` NOT LIKE 'PR8%' OR ISNULL(exclude.`code`))
GROUP BY location.location
ORDER BY location.id

在上面的 SQL 中,用户输入“PR8”,该值将使用 PHP 变量发送到 where 子句,我在查找表中查找邮政编码的前 2 个字母,然后我还尝试查找什么用户在排除表中输入以从结果中忽略此内容。不幸的是,我不知道哪里出了问题,我得到了以下结果,根据上面的表格,由于排除,我应该没有得到任何结果......

+----+-------------+------+---------+
| id | location | code | exclude |
+----+-------------+------+---------+
| 1 | Location b | PR8 | PR5 |
+----+-------------+------+---------+

我希望我已经解释得足够好,但请告诉我是否需要添加更多细节。

我真的很感谢对此的一些指导,非常感谢:)

最佳答案

我认为你使用了“NOT IN”。

所以你的“AND”会更像

AND lookup.`code` NOT IN (SELECT 'code' FROM exclude)

编辑我很确定这会起作用,但不确定最佳性能,我会把它留给比我更聪明的人。

SELECT
lookup.*, location.location
FROM lookup
LEFT JOIN
location
ON location.id = lookup.location_id
WHERE lookup.`code` LIKE 'PR%'
AND lookup.`code` NOT IN (SELECT `code` FROM exclude)
GROUP BY location.location
ORDER BY location.id

关于php - MySQL 查找连接 3 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405352/

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