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

如何从mysql和PHP中引用的表中选择字段,php,mysql,sql,Php,Mysql,Sql,我有两个mysql表“category”和“applications”,其中“applications”表引用了“category” 显然,一个应用程序可以有多个类别,所以我这里的问题是尝试选择存在类别的应用程序。 我试过了 $query4 = "SELECT * from applictions Where category = '6'; 但它只选择第一类为6的应用程序,例如6&5&1,因此如果我有一个应用程序“chrome browser”和“categories 5&3&6”,它将不会被

我有两个mysql表“category”和“applications”,其中“applications”表引用了“category”

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

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

但它只选择第一类为6的应用程序,例如6&5&1,因此如果我有一个应用程序“chrome browser”和“categories 5&3&6”,它将不会被选中。

是的,关系数据库不能以这种方式工作。你需要所谓的多对多关系

为此,您需要创建一个新表

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;

我已经修复了代码,我用phpmyadmin搜索了我的表,直到找到了返回结果的正确过滤器,结果发现我需要

SELECT * FROM `softwares` WHERE `category` LIKE '%6%'
而不是

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

谢谢大家。

到底是什么错误?我认为DZDomi不会有错误,它是有效的SQL。但是,也不会有结果,因为
类别
字段不包含“6”,最好的方法是按照@trollboy解释的那样。如果类别为varchar类型,您也可以尝试执行:
SELECT*从应用程序中选择类别,如“%$6&%”
@D.Smania,如果类别为varchar的开头或结尾,则该选项不起作用,请参阅我回答后的注释,以获取包含性解决方案。谢谢你的大声呼喊@你的trollboy是对的,但是如果你像“%6%”一样使用,你可以匹配ID为16或26的类别。最好的方法是按照你解释的答案来做。如果做不到这一点,你仍然可以从类别为“%6%”的应用程序中获取所需的数据,类似于:
SELECT*
然而,这样的查询效率很低,并且会导致糟糕的数据规范化做法。看看我们在上面讨论的解决方案,它有很多错误。
"SELECT * from applictions Where category = '6';