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 从关联的Toxi表中检索数据_Php_Mysql_Relational Database - Fatal编程技术网

Php 从关联的Toxi表中检索数据

Php 从关联的Toxi表中检索数据,php,mysql,relational-database,Php,Mysql,Relational Database,我正在用一个典型的MySQL查询检索我的部分站点数据,并从我的主表中回显来自各个字段等的结果,主表的结构并不重要,但有一个唯一的id,即“job_id” 为了将多个类别与“工作id”关联,我采用了一种toxi解决方案,将类别与每个“工作id”关联 TABLE `tags` ( `tag_id` INT NOT NULL AUTO_INCREMENT, `tag_name` VARCHAR(20) NOT NULL, PRIMARY KEY (`tag_id`) ) CREATE TABLE

我正在用一个典型的MySQL查询检索我的部分站点数据,并从我的主表中回显来自各个字段等的结果,主表的结构并不重要,但有一个唯一的id,即“job_id”

为了将多个类别与“工作id”关联,我采用了一种toxi解决方案,将类别与每个“工作id”关联

TABLE `tags` (
`tag_id` INT NOT NULL AUTO_INCREMENT, 
`tag_name` VARCHAR(20) NOT NULL, 
PRIMARY KEY (`tag_id`)
)

CREATE TABLE `tag_relational` (
`job_id` INT NOT NULL, 
`tag_id` INT NOT NULL
)
我想做的是,当我使用“job_id”从主表中回显信息时,我还想回显该job_id所匹配的所有类别

下面的查询仅返回列出作业id所针对的第一个catagorytag\u名称,此时最多应为六个:

$query = "SELECT * FROM tags t
JOIN tag_relational r   
ON t.tag_id=r.tag_id
WHERE r.job_id = $job_id";

$result=mysql_query($query) or die(mysql_error());
$cats=mysql_fetch_assoc($result);
在我的代码中,我用这个来呼应匹配的分类:

<?php echo $cats['tag_name'];?>
有人能解释一下我是如何让所有的分类名称呼应出来的,而不仅仅是第一个吗? 谢谢 丹


顺便说一句,向mu道歉的时间太短了,当我在上面有虚假/不完整的信息时,他很友好地回答了我的问题。

如果你只想列出类别名称,那么你可以使用如下方式:

select b.*,
       group_concat(c.category_name order by c.category_name separator ' ,') as cats
from business b
join tbl_works_categories w on b.id = w.bus_id
join categories c on w.category_id = c.category_name
where ...
group by b.id
当然,你需要一个适当的WHERE子句。这将为您提供业务中常见的内容,以及cats中以逗号分隔的列表形式列出的类别名称

如果您还需要类别ID,那么两个查询可能更好:一个用于获取业务信息,另一个用于收集类别:

select w.bus_id, c.category_id, c.category_name
from tbl_works_categories w
join categories c
where w.bus_id IN (X)

其中X是以逗号分隔的业务ID值列表。然后你就可以在客户端解决问题。

不,这只是我需要/想要的分类名称。谢谢所以我只需在上面插入我当前的Where查询,那么“cats”是我回显的一个变量,或者我该如何处理它?再次感谢,Dan@Dan:好的,只要加上你的WHERE,猫就会像其他专栏一样出现。太棒了。我会试一试,希望能尽快把答案记下来。非常感谢你的帮助。丹尼编辑了我的问题,并在自己身上做了更多的工作。抱歉没有早点这么做。Dan@Dan:那么问题出在PHP中了?您应该能够在$cats=mysql\u fetch\u assoc$result{…时获取所有六行。