gpt4 book ai didi

使用多行的 MySQL 查询搜索

转载 作者:行者123 更新时间:2023-11-29 14:52:22 24 4
gpt4 key购买 nike

首先,我想对可能出现的错误标题表示歉意……我发现很难描述我在这里想要做什么。

在我当前正在进行的项目中,我们使用 MySQL 设置了一个“动态”数据库结构,如下所示。

item_details(描述item_data)

fieldID  |  fieldValue  |  fieldCaption

1 | addr1 | Address Line 1

2 | country | Country

item_data

itemID   |  fieldID  |  fieldValue

12345 | 1 | Some Random Address

12345 | 2 | United Kingdom

正如您所看到的,如果我想查找项目 12345 的地址,我只需执行该语句即可。

从 item_data 中选择 fieldValue,其中 fieldID=1 和 itemID=12345;

但这就是我陷入困境的地方......数据库相对较大,大约有 80k 行,我试图在 PHP 中创建一组搜索函数。

我希望能够尽快对查询的结果集执行查询...

例如,搜索某个国家/地区内的地址名称...即:搜索与查询结果具有相同 itemID 的结果的 fieldValue:

'从 item_data WHERE fieldID=2 和 fieldValue='英国' 中选择 itemID..

抱歉,如果我不清楚,过去几天我一直在努力解决这个问题......

干杯

最佳答案

您可以通过多种方式做到这一点。一种是对 item_data 表使用多个联接,并将 fieldID 限制为您想要获取的任何内容。

SELECT * 
FROM
Item i
INNER JOIN item_data country
ON i.itemID = country.itemID
and fieldid = 2
INNER JOIN item_data address
ON i.itemID = country.itemID
and fieldid = 1
WHERE
country.fieldValue= 'United Kingdom'
and address.fieldValue= 'Whatever'

顺便说一句,这个结构通常被称为 Entry Attribute Value or EAV数据库

关于使用多行的 MySQL 查询搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477561/

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