2011-08-01 132 views
0

我檢索我的數據爲我的網站的一部分與一個典型的MySQL查詢和呼應各種領域等從我的主要表的結果,其結構並不重要,但有一個唯一的ID這是'job_id'從關聯的Toxi檢索數據表

爲了有多個類別與'job_id'相關聯,我使用了一個toxi解決方案,它將catgories與每個'job_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是對匹配名作。

下面只返回了JOB_ID上市反對,當它應該是最多六個第一產品類別(TAG_NAME)(目前)查詢:

$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'];?> 

有人能解釋我如何可以得到所有的產品類別名稱呼應出來,而不是僅僅是第一? 感謝 丹

BTW,道歉畝太短誰親切地回答我的問題時,我有假/不完整上述信息。

回答

0

如果你只是想列出類別名稱,那麼你可以使用group_concat排序是這樣的:

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當然子句。這會爲您提供business中的常用內容以及cats中的逗號分隔列表中的類別名稱。

如果您需要的類別ID爲好,然後兩個查詢可能會更好:一個得到business信息和第二收集類別:

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

其中Xbusiness一個逗號分隔的列表ID值。然後你會在客戶端進行修補。

+0

沒有它只是我需要/想要的類別名稱。謝謝。所以我只是將我當前的Where查詢插入到上面,然後是'貓',然後是我回應的變量,或者我該如何處理?再次感謝,丹 – Dan

+0

@丹:對,只需添加你的WHERE,然後'貓'應該像任何其他列一樣出來。 –

+0

輝煌。我會給它一個去,希望標記爲很快回答。非常感謝您的幫助。丹 – Dan