-
Simplifier les requêtes
Bonjour
J'aimerais savoir comment on s'y prend pour faire une requêtes sur un tableau donnée par une autre requête ceci dans le souci d'attaquer le moins possible la base de données pour éviter les messages du genre "le temps de connexion à la BD atteint".
je m'explique mieux.
SI je veux compter le nombre de fois un n° present dans la table 1 a participer dans la table 2.
Ceci je le fait pas imbrication de requête ou par boucle ce dernier étant fastidieu pour la BD car à chaque incrémentation il ya requête dans la BD.
Alors je doit trouver un moyen pour faire une seule fois la requête pour sortir les éléments de la table 2 et ensuite de façon virtuelle effectuée une autre requête sur cette table sans attaquer encore la BD.
Merci de m'aider
-
Avec une jointure :
Code:
SELECT COUNT(*) FROM table1 JOIN table2 on table1.champ = table2.champ
-
Ok
D'abord J'aimerai savoir si ta requête est différente de celle ci :
Code:
SELECT count(*) FROM table1 a, table2 b WHERE a.champ=b.champ
Ensuite le but de ma question était de savoir en général comment on s'y prend en PHP pour faire une requête dans un tableau (array) donnée par une autre requête qui a effectuée une action sur la BD.
Je c pas si je pose mal ma question mais l'idée c'est un peu de faire une requête sur un tableau virtuelle.
Un exemple banale :Table CLIENTS
les colonnes
Id - Nom - Prenoms
les enregistrements :
1 - Koffi - Blaise
2 - Fabien - Andrée
3 - François - Mouton
4 - Dupont - Elise
Faire une requête sur un tel tableau.
Ma solution (imbrication de requête)
Moi je ferais :
Code:
SELECT p.Prenoms FROM (SELECT * FROM CLIENTS) p
Ici je veux savoir si ces 2 requettes attaquent la BD ou c'est la seconde requête qui le fait et sort un tableau virtuel qu'attaque la première requête).
JUSTE UN SOUCI DE NE PAS FATIGUER LA BD.
C'est l'essentiel de ma préoccupation.
-
Ta syntaxe de jointure avec un WHERE est mauvaise.
On peut par contre effectivement utiliser une sous-requête :
Code:
SELECT COUNT(*) FROM table1 WHERE champ IN (SELECT champ FROM table2)
Si tu veux voir precisemment comment mysql traite une requête, tu peux utiliser la commande EXPLAIN.
-
Code:
Ta syntaxe de jointure avec un WHERE est mauvaise.
Un peu dur quand même.
Ok en quoi est-ce que c'est mauvais. ne donne t'il pas le même résultat que ta requête?
-
-