php - 如何从 mysql 和 PHP 中引用的表中选择字段

标签 php mysql sql

我有两个 mysql 表“类别”和“应用程序”,其中“应用程序”表引用“类别”。

my "applications" table looks like
id  apps                 category
1   adobe reader         1&4&6&10
2   photoshop cs3        4&6&7&6

my "category" table looks like
id   category
1    utilities
2    windows
3    linux
4    mac
5    multimedia
And so on ..

显然,一个应用程序可以有多个类别,因此我的问题是尝试选择存在类别的应用程序。 我已经尝试过了

$query4 = "SELECT * from applictions Where category = '6';

但它只选择第一个类别为 6 的应用程序,例如 6&5&1,因此,如果我有一个包含“类别 5&3&6”的应用程序“chrome 浏览器”,则不会选择它。

最佳答案

是的,关系数据库不是这样工作的。您想要所谓的多对多关系。

要实现此目的,您需要创建一个新表

tablename: 
    Applications_Have_Category
Fields:
    Applications_id
    Category_id

在此表中,您将插入以下内容:

1,1
1,4
1,6
1,10
2,4
2,6
2,7
2,6

这样每个关系都有它自己的记录。您获取所有类别 6 项目的查询将如下所示:

SELECT * FROM `applictions` a JOIN  `Applications_Have_Category` ahc ON a.id = ahc. Applications_id WHERE ahc.Category_id = 6;

关于php - 如何从 mysql 和 PHP 中引用的表中选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52573045/

相关文章:

php - 使用 UNION 进行三个查询

mysql - 如何使用带条件的 JOIN

sql - 如何检查oracle sql中的非空列约束?

php - 在 PHP 和 MYSQL 中从名字或姓氏的首字母进行搜索

Javascript 将对象插入特定索引

PhpMyAdmin 运行存储过程通过界面工作,但作为查询运行不起作用

PHP While 循环 - 变量将仅在最后一个条目上传递

mysql - SQL 每个 FieldID 仅返回 1 行

php - 如何比较从文本框插入的日期与 MYSQL 数据库中的日期

javascript - 无需提交表单即可获取输入字段的值