2010-07-29 6 views
1

Existe-t-il une requête MYSQL que je peux utiliser pour commander des éléments d'une seconde table.MYSQL commande les données d'une table à l'aide de la deuxième table

Mon exemple Je liste Mes magasins ... chaque magasin a un certain nombre de produits dans une table différente. donc mon affiche la liste stocker le nombre de produits dans ce magasin ..

est là une requête MYSQL facile si je peux commander mes magasins en nombre de produits

mon magasin ne marche pas tenir une valeur du nombre, il compte les lignes dans la 2ème table

+1

Pls postent que vous avez essayé, quelques exemples de données, et les résultats escomptés. –

+0

Oui, vous pouvez, en utilisant un 'join'. Voir le commentaire d'OMG Ponies. – MvanGeest

+0

Eh bien, je n'ai rien essayé parce que j'ai l'impression que son possible mysql lancé. Je voudrais construire un tableau avec toutes mes données de la première table ... puis extrayé les données des produits et affiché mon tableau .. mais il semble compliqué pour rien. – StiGMaT

Répondre

3

Si je comprends bien votre problème, vous voudrez peut-être essayer quelque chose comme ce qui suit:

SELECT  stores.id store_id, COUNT(products.id) num_products 
FROM  stores 
LEFT JOIN products ON (stores.id = products.store_id) 
GROUP BY stores.id 
ORDER BY num_products; 

Cas de test:

CREATE TABLE stores (id int, name varchar(10)); 
CREATE TABLE products (id int, store_id int); 

INSERT INTO stores VALUES (1, 'store 1'); 
INSERT INTO stores VALUES (2, 'store 2'); 
INSERT INTO stores VALUES (3, 'store 3'); 
INSERT INTO stores VALUES (4, 'store 4'); 

INSERT INTO products VALUES (1, 1); 
INSERT INTO products VALUES (2, 1); 
INSERT INTO products VALUES (3, 1); 

INSERT INTO products VALUES (4, 2); 

INSERT INTO products VALUES (5, 3); 
INSERT INTO products VALUES (6, 3); 

Résultat:

+----------+--------------+ 
| store_id | num_products | 
+----------+--------------+ 
|  4 |   0 | 
|  2 |   1 | 
|  3 |   2 | 
|  1 |   3 | 
+----------+--------------+ 
4 rows in set (0.00 sec) 

Vous pouvez également trier par ordre décroissant en ajoutant ing DESC après ORDER BY num_products:

+----------+--------------+ 
| store_id | num_products | 
+----------+--------------+ 
|  1 |   3 | 
|  3 |   2 | 
|  2 |   1 | 
|  4 |   0 | 
+----------+--------------+ 
4 rows in set (0.00 sec) 
+0

im gona pour cette solution – StiGMaT

+0

SELECT *, COUNT (jos_com_ai_prod.idprod) FROM '' jos_com_ai_manu' REJOIGNEZ jos_com_ai_prod' ON (jos_com_ai_manu.idmanu = jos_com_ai_prod.idmanu) GROUP BY jos_com_ai_manu.idmanu est ma requête en cours, mais il ne le rendement éléments qui ont des produits et ne seront pas afficher les éléments sans? – StiGMaT

+0

je thinjk la raison est le ON ... est nécessaire pour trouver un produit correspondant ... mais s'il n'y a pas de produit je veux num_product dire 0 et tirer les données du magasin – StiGMaT

0

Cela devrait être assez simple tant que vous avez quelque chose à joindre à la deuxième table.

Select a.* From `FirstTable` a 
Inner Join `SecondTable` b on a.SomeCol = b.SomeCol 
Order By b.OrderingCol 
Questions connexes