2011-08-01 2 views
0

Associated Toxi Je récupérer mes données pour une partie de mon site avec une requête MySQL typique et faisant écho les résultats de divers champs etc etc de ma table principale dont la structure n'a pas d'importance, mais qui a un identifiant unique qui est 'job_id'Récupération données de la table

Pour avoir plusieurs catégories associées à cet 'job_id', j'ai utilisé une solution toxi qui associe les catgories à chaque '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 
) 

Ce que je veux faire est, quand je fais écho à l'information de la table principale (en utilisant « job_id ») je veux aussi faire écho à tous les catagories qui que job_id est mis en correspondance.

La requête ci-dessous ne retourne la première catagory (tag_name) que le job_id est cotée contre, quand il devrait être jusqu'à six (pour le moment):

$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); 

Dans mon code j'utilise ce pour faire écho les catagories matched:

<?php echo $cats['tag_name'];?> 

quelqu'un peut-il expliquer comment je peux obtenir tous les noms catagory à écho sur plutôt que le premier? Merci Dan

BTW, mes excuses à mu est trop courte qui a bien voulu répondre à ma question quand j'avais des informations factice/moins complète ci-dessus.

Répondre

0

Si vous voulez juste la liste des noms de catégorie, vous pouvez utiliser group_concat un peu comme ceci:

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 

Vous auriez besoin d'une bonne clause WHERE bien sûr. Cela vous donnera les trucs habituels de business et les noms des catégories comme une liste délimitée par des virgules dans cats.

Si vous avez besoin des ID de catégorie ainsi, alors deux questions pourraient être mieux: un pour obtenir les informations business et une seconde pour recueillir les catégories:

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 est une liste délimitée par des virgules business Valeurs d'ID. Ensuite, vous corrigeriez les choses du côté client.

+0

Non seulement ses noms Catagory i besoin/veulent. Merci. Donc, je viens d'insérer ma requête actuelle dans le ci-dessus et est «chats» puis une variable que je résonne, ou comment puis-je traiter cela? Merci encore, Dan – Dan

+0

@ Dan: Oui, il suffit d'ajouter WHERE et 'cats' devrait sortir comme une autre colonne. –

+0

Brillant. J'essaierai de le faire et j'espère que cela sera bientôt répondu. Merci beaucoup pour votre aide. Dan – Dan

Questions connexes