Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 连接MySQL表并将列与列表数据进行比较_Php_Mysql_Join_Group By - Fatal编程技术网

Php 连接MySQL表并将列与列表数据进行比较

Php 连接MySQL表并将列与列表数据进行比较,php,mysql,join,group-by,Php,Mysql,Join,Group By,我一直在努力寻找正确的方法来提取我需要的数据。我将MySQL与PHP结合使用,并将数据转换为列表格式。我唯一的问题是实际查询本身。以下是DB的设置方式: 我有一个“chars”表,其中包含“id”、“descrip”和“class”列 我有一个“animal”表,其中包含“animal_id”、“charlist”和 在“chars”中,id是递增的int,“descrip”和“class”是文本/字符串 “id”和“descrip”对于每一行都是不同的,但“class”有时是相同的,其值类似于

我一直在努力寻找正确的方法来提取我需要的数据。我将MySQL与PHP结合使用,并将数据转换为列表格式。我唯一的问题是实际查询本身。以下是DB的设置方式:

我有一个“chars”表,其中包含“id”、“descrip”和“class”列

我有一个“animal”表,其中包含“animal_id”、“charlist”和

在“chars”中,id是递增的int,“descrip”和“class”是文本/字符串

“id”和“descrip”对于每一行都是不同的,但“class”有时是相同的,其值类似于“habitat”、“size”、“diet”等

我想要的是一个如下所示的列表:

北极地下居住区 食虫杂食动物 这就是我开始遇到麻烦的地方。在“详细信息”页面上,我显示了特定动物的所有数据,以点击的为准,并参考“特征”,每个动物在数据库中都有自己的“charlist”值。此值是一个引用“chars”表的数字字符串,如“2,55,67,90122”

因此,我将所有特定的动物数据拉入了页面上的一个php变量,我想提供这些信息。现在我需要使用该动物的“charlist”数据来查找并列出与该动物相关的特征

我的问题是这样的,我知道我要离开了:

在animals.charlist中的chars.id上选择*从“chars”左侧内部连接“animals”,其中

我试过很多不同的方法,这就是我迷路的地方。我的大脑告诉我加入表格,找到charlist中的数字,其中animal.animal\u id=mysql\u real\u escape\u string$animal\u id-当然mysql告诉我我不能这样做

我知道对于列表的标题,我可能需要根据条件分组

关于查询和查询语法的任何帮助都将非常有用。我是MySQL的新手,我非常高兴并渴望学习如何正确使用MySQL

感谢阅读。

x中的a当且仅当a等于x时返回true

如果x是一个字符串,甚至是一个由逗号分隔的字符串,那么只有当a等于该字符串时,该语句才会为true。也就是说,“123456789”中的123是假的。请注意,这与传递多个参数(如123456789中的123)不同

在MySQL中,可以改为使用,它需要一个由逗号分隔的字符串。但是,在数据库列中存储分隔列表是非常困难的。您应该定义第三个关系表,将外键存储到现有的两个表中:animal\u id,characteristic\u id:

创建表格动物特征 主键动物识别号,特征识别号, 外键动物标识引用动物标识, 外键特征_id引用字符id 选择animal.animal\u id、chars.id作为特征\u id 从animal JOIN chars ON FIND_IN_SETchars.id,animal.charlist ; 然后你可以做:

挑选* 来自动物 使用animal_id连接animal_特征 在chars.id=animal\u characteristics.characteristics\u id上加入chars 哪里
这是难以置信的帮助和信息。非常感谢你!