gpt4 book ai didi

PHP/MySQL 关系数据库模式的搜索代码和逻辑

转载 作者:行者123 更新时间:2023-11-30 23:37:19 25 4
gpt4 key购买 nike

我已经创建了这个数据库模式,并在这里得到了几个用户的帮助,我有一个数据库,它接收存储在业务表中的用户提交的业务条目,这些条目另外分组在类别表中大约 10 个类别中的一个或几个类别下, 在 tbl_works_catagories 表中,通过将 bus_id 与类别 ID 匹配。

例如,bus_id 21 可以与 catagory_id 1、2、5、7、8 相关联。

CREATE TABLE `business` (
`bus_id` INT NOT NULL AUTO_INCREMENT,
`bus_name` VARCHAR(50) NOT NULL,
`bus_dscpn` TEXT NOT NULL,
`bus_url` VARCHAR(255) NOT NULL,
PRIMARY KEY (`bus_id`)
)

CREATE TABLE `categories` (
`category_id` INT NOT NULL AUTO_INCREMENT,
`category_name` VARCHAR(20) NOT NULL,
PRIMARY KEY (`category_id`)
)

CREATE TABLE `tbl_works_categories` (
`bus_id` INT NOT NULL,
`category_id` INT NOT NULL
)

现在,我接下来要做的是一个搜索功能,它会根据类别返回商家。例如,假设输入业务表的其中一家企业是一家面包师,当它被输入时,它被分类在食品 (catagory_id 1) 和外卖 (catagory_id 2) 下。

因此,访问者搜索“食品”类别下列出的企业,并返回我们友好的社区面包师。

与所有 PHP/MySQL 一样,我只是(一开始)无法理解逻辑,更不用说代码了!

最佳答案

您应该在表中设置外键以将它们链接在一起。

CREATE TABLE `business` (
`bus_id` INT NOT NULL AUTO_INCREMENT,
`bus_name` VARCHAR(50) NOT NULL,
`bus_dscpn` TEXT NOT NULL,
`bus_url` VARCHAR(255) NOT NULL,
PRIMARY KEY (`bus_id`)
)

CREATE TABLE `categories` (
`category_id` INT NOT NULL AUTO_INCREMENT,
`category_name` VARCHAR(20) NOT NULL,
PRIMARY KEY (`category_id`)
)

CREATE TABLE `tbl_works_categories` (
`bus_id` INT NOT NULL,
`category_id` INT NOT NULL,
FOREIGN KEY (`bus_id`) REFERENCES business(`bus_id`),
FOREIGN KEY (`category_id`) REFERENCES categories(`category_id`)
)

那么您的搜索查询将类似于:

SELECT b.*
FROM business b, categories c, tbl_works_categories t
WHERE
b.bus_id = t.bus_id AND
c.category_id = t.category_id AND
c.category_id = *SOME SEARCH VALUE*

使用 JOIN 会写成:

SELECT b.*
FROM business b
JOIN tbl_works_categories t
ON b.bus_id = t.bus_id
JOIN categories c
ON c.category_id = t.category_id
WHERE c.category_id = *SOME SEARCH VALUE*

关于PHP/MySQL 关系数据库模式的搜索代码和逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446288/

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