124 votes

Plusieurs instructions de sélection dans une seule requête

Je génère un rapport en php (mysql),

ex :

`select count(id) as tot_user from user_table
 select count(id) as tot_cat from cat_table
 select count(id) as tot_course from course_table`

J'ai ainsi 12 tables.

Puis-je le faire en une seule fois ? Si c'est le cas ? Le processus devient-il lent ?

0 votes

Pour les tables MyISAM, il existe même une bien meilleure méthode, voir ma réponse, qui est plus rapide.

2voto

Niclausel Points 41

Je sais qu'il s'agit d'une vieille pile mais je vais poster ce cas de sélection Multi-SQL.

    SELECT bp.bizid, bp.usrid, bp.website, 
ROUND((SELECT SUM(rating) FROM ratings WHERE bizid=bp.bizid)/(SELECT COUNT(*) FROM ratings WHERE bizid=bp.bizid), 1) AS 'ratings', 
(SELECT COUNT(*) FROM bzreviews WHERE bizid=bp.bizid) AS 'ttlreviews', 
bp.phoneno, als.bizname, 
(SELECT COUNT(*) FROM endorsment WHERE bizid=bp.bizid) AS 'endorses'
, als.imgname, bp.`location`, bp.`ownership`, 
(SELECT COUNT(*) FROM follows WHERE bizid=bp.bizid) AS 'followers', 
bp.categories, bp.openhours, bp.bizdecri FROM bizprofile AS bp 
INNER JOIN alluser AS als ON bp.usrid=als.userid 
WHERE als.usertype='Business'

0voto

Le mot-clé "AS" est la commande d'alias. Il peut être très utile pour renvoyer un nom de table/champ d'agrégation cohérent à partir d'une structure non uniforme (comme ci-dessus), mais il a ses problèmes.

http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

-13voto

James Brooks Points 419

Je suis certain qu'il n'est pas possible de sélectionner des données dans plusieurs tables dans MySQL. D'autant plus que je n'ai jamais vu le mot-clé "AS".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X