{MySQL} Requetes sur plusieurs tables
Fermé
alesque
-
8 déc. 2009 à 18:07
alesque51 Messages postés 14 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 9 décembre 2009 - 9 déc. 2009 à 18:52
alesque51 Messages postés 14 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 9 décembre 2009 - 9 déc. 2009 à 18:52
A voir également:
- {MySQL} Requetes sur plusieurs tables
- Comment faire une table des matières sur word - Guide
- Mysql community server - Télécharger - Bases de données
- Tables ascii - Guide
- Le paquet « mysql-server » n'a pas de version susceptible d'être installée ✓ - Forum Debian
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/lib/mysql/mysql.sock' (2) ✓ - Forum Linux / Unix
12 réponses
Salut
le sum sert à sommer des valeurs. il est à placer où tu veux dans le select
exemple:
select sum(poids) from eleves where age < 15;
ainsi, il t'est renvoyé le poids total des eleves de moins de 15 ans
maintenant, si tu veux un total par tranche d'age, il faut effectuer un regroupement
select age, sum(poids) from eleves where age < 15,
exemple de ce que tu pourrais obtenir
Age sum(poids)
10 232
11 175
12 196
13 201
14 280
À toi de tester maintenant
le sum sert à sommer des valeurs. il est à placer où tu veux dans le select
exemple:
select sum(poids) from eleves where age < 15;
ainsi, il t'est renvoyé le poids total des eleves de moins de 15 ans
maintenant, si tu veux un total par tranche d'age, il faut effectuer un regroupement
select age, sum(poids) from eleves where age < 15,
exemple de ce que tu pourrais obtenir
Age sum(poids)
10 232
11 175
12 196
13 201
14 280
À toi de tester maintenant
Ceika
Messages postés
52
Date d'inscription
mercredi 13 décembre 2006
Statut
Membre
Dernière intervention
15 décembre 2009
13
8 déc. 2009 à 20:04
8 déc. 2009 à 20:04
Le sum() est une fonction qui sert à faire la somme du champs sélectionné.
Par exemple en français :
Tu recherches le chiffres d'affaires total sur la vente du produit qui est un modèle de téléphone disons : iphone
tu feras donc :
select sum(ca) from, produits where produits = "iphone" + jointure
Et tu auras le CA total qu'a généré la vente de l'iphone.
Voila pour la fonction sum :)
Par exemple en français :
Tu recherches le chiffres d'affaires total sur la vente du produit qui est un modèle de téléphone disons : iphone
tu feras donc :
select sum(ca) from, produits where produits = "iphone" + jointure
Et tu auras le CA total qu'a généré la vente de l'iphone.
Voila pour la fonction sum :)
Merci pour ces réponses, ce n'est donc pas la fonction que je cherche pour le moment, je cherche juste à afficher des données provenant de plusieurs tables.
Ex :
J'ai une table "manufacturers" dans laquelle j'ai tout mes manufacturers_id
dans la table products, je voudrais sélectionner tous les produits ( d'un fabricant (ID 25 par exemple) ainsi que le stock (products_quantity)
et ajouter products_description qui se trouve dans la table produits_description
Je sais pas si j'arrive bien à expliquer..., en gros je cherche la bonne syntaxe pour afficher (sans mise en forme) :
Un fabricant (manufacturers_id)
La liste de ses produits - leurs descriptifs - la quantité
Merci pour votre aide
(j'ai déjà eu besoin d'aide dans d'autres domaines et votre forum est vraiment formidable !)
Ex :
J'ai une table "manufacturers" dans laquelle j'ai tout mes manufacturers_id
dans la table products, je voudrais sélectionner tous les produits ( d'un fabricant (ID 25 par exemple) ainsi que le stock (products_quantity)
et ajouter products_description qui se trouve dans la table produits_description
Je sais pas si j'arrive bien à expliquer..., en gros je cherche la bonne syntaxe pour afficher (sans mise en forme) :
Un fabricant (manufacturers_id)
La liste de ses produits - leurs descriptifs - la quantité
Merci pour votre aide
(j'ai déjà eu besoin d'aide dans d'autres domaines et votre forum est vraiment formidable !)
alesque51
Messages postés
14
Date d'inscription
mardi 10 novembre 2009
Statut
Membre
Dernière intervention
9 décembre 2009
9 déc. 2009 à 15:56
9 déc. 2009 à 15:56
En fait, voilà ce que j'essaye de faire, je sais, ça doit être du grand n'importe quoi, mais c'est pour ça que j'ai besoin de vos lumières...
[quote]<?php
$sql = 'SELECT products_description.products_name, products.products_quantity, products_description.products_description, manufacturers.manufacturers_id FROM manufacturers, products_description, products WHERE manufacturers.manufacturers_id = "25"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
echo ''.$data['products_descrpition.products_name, products_description.product_description, products_products_quantity'];
mysql_free_result ($req);
mysql_close ();
?>
[/quote]
Bien sur, j'ai une erreur (Warning: mysql_query()) qui s'affiche au lieu du résultat tant attendu, mais je suppose que vous n'avez même pas besoin de tester pour voir que ça ne fonctionne pas.
[quote]<?php
$sql = 'SELECT products_description.products_name, products.products_quantity, products_description.products_description, manufacturers.manufacturers_id FROM manufacturers, products_description, products WHERE manufacturers.manufacturers_id = "25"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
echo ''.$data['products_descrpition.products_name, products_description.product_description, products_products_quantity'];
mysql_free_result ($req);
mysql_close ();
?>
[/quote]
Bien sur, j'ai une erreur (Warning: mysql_query()) qui s'affiche au lieu du résultat tant attendu, mais je suppose que vous n'avez même pas besoin de tester pour voir que ça ne fonctionne pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
queryz
Messages postés
102
Date d'inscription
mardi 17 novembre 2009
Statut
Membre
Dernière intervention
9 décembre 2010
10
9 déc. 2009 à 16:22
9 déc. 2009 à 16:22
Il faut que tu fais des jointures !
Quels sont les clés primaire et clé etrangéres qu'il y a dans les tables utilisés?
Quels sont les clés primaire et clé etrangéres qu'il y a dans les tables utilisés?
alesque51
Messages postés
14
Date d'inscription
mardi 10 novembre 2009
Statut
Membre
Dernière intervention
9 décembre 2009
9 déc. 2009 à 16:26
9 déc. 2009 à 16:26
je ne comprends pas la question, clé primaire ou étrangères ?
Sinon, les jointures, c'est pas avec le "." ?
Sinon, les jointures, c'est pas avec le "." ?
queryz
Messages postés
102
Date d'inscription
mardi 17 novembre 2009
Statut
Membre
Dernière intervention
9 décembre 2010
10
9 déc. 2009 à 16:37
9 déc. 2009 à 16:37
Exemple de clé primaire : ETABLISSEMENT_ID
CLE PRIMAIRE DE CETTE TABLE :
ÉTABLISSEMENT_ ID | NOM_ETABLISSEMENT
------------------------------------------------------
1234 TOTO
1235 TITI
ICI ETABLISSEMENT_ID est une clé étrangère car il est relié a une clé primaire :
PRODUIT |ETABLISSEMENT_ID
------------------------------------
PAIN 1234
LAIT 1235
CLE PRIMAIRE DE CETTE TABLE :
ÉTABLISSEMENT_ ID | NOM_ETABLISSEMENT
------------------------------------------------------
1234 TOTO
1235 TITI
ICI ETABLISSEMENT_ID est une clé étrangère car il est relié a une clé primaire :
PRODUIT |ETABLISSEMENT_ID
------------------------------------
PAIN 1234
LAIT 1235
queryz
Messages postés
102
Date d'inscription
mardi 17 novembre 2009
Statut
Membre
Dernière intervention
9 décembre 2010
10
9 déc. 2009 à 16:39
9 déc. 2009 à 16:39
Un conseil : Lis les tutos jusque à ce que tu comprennent le principe clé primaire et clé étrangére car tu n'arriveras jamais à faire de requete si tu ne connais pas ça
En fait il faut que tu signales à quelle table appartiennent les données.
De ce que je comprend tu as 3 tables : products, products_descriptions et manufacturers.
SELECT P.products_model, PD.products_description FROM products_description AS PD, products AS P, manufacturers AS M SUM (M.manufacturers_id) WHERE M.manufacturers_id = "25"'
De tête ça devrait faire un truc du genre. Mais si je dis pas de bétîses ta requête n'est quand même pas bonne. Quand tu travailles sur plusieurs tables il faut faire des jointures entres elles pour pouvoir se ballader librement dans celles que tu veux. En gros, si je vais dire que dans la tables manufacturers tu as products_id et products_description_id (c'est pour l'exemple hein, juste pour te montrer que les tables ont un point commun).
Donc ta requête deviendrai du coup :
SELECT P.products_model, PD.products_description
FROM manufacturers AS M
JOIN products AS P ON M.products_id=P.products_id
JOIN products_description AS PD ON M.products_descriptions_id=PD.products_descriptions_id
SUM (M.manufacturers_id)
WHERE M.manufacturers_id = "25"'
De ce que je comprend tu as 3 tables : products, products_descriptions et manufacturers.
SELECT P.products_model, PD.products_description FROM products_description AS PD, products AS P, manufacturers AS M SUM (M.manufacturers_id) WHERE M.manufacturers_id = "25"'
De tête ça devrait faire un truc du genre. Mais si je dis pas de bétîses ta requête n'est quand même pas bonne. Quand tu travailles sur plusieurs tables il faut faire des jointures entres elles pour pouvoir se ballader librement dans celles que tu veux. En gros, si je vais dire que dans la tables manufacturers tu as products_id et products_description_id (c'est pour l'exemple hein, juste pour te montrer que les tables ont un point commun).
Donc ta requête deviendrai du coup :
SELECT P.products_model, PD.products_description
FROM manufacturers AS M
JOIN products AS P ON M.products_id=P.products_id
JOIN products_description AS PD ON M.products_descriptions_id=PD.products_descriptions_id
SUM (M.manufacturers_id)
WHERE M.manufacturers_id = "25"'
alesque51
Messages postés
14
Date d'inscription
mardi 10 novembre 2009
Statut
Membre
Dernière intervention
9 décembre 2009
9 déc. 2009 à 16:44
9 déc. 2009 à 16:44
Ok, alors,
manufacturers_id est la clé primaire de la table manufacturers
manufacturers_id est une clé étrangère dans la table products
Dans la table products, la clé primaire est products_id
et dans products_description, c'est aussi products_id
manufacturers_id est la clé primaire de la table manufacturers
manufacturers_id est une clé étrangère dans la table products
Dans la table products, la clé primaire est products_id
et dans products_description, c'est aussi products_id
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
9 déc. 2009 à 16:57
9 déc. 2009 à 16:57
Bonjour,
Pour les jointures, il est plus propre d'utiliser le mot clé JOIN. Et plus simple d'utiliser des alias pour les noms de tables, mais ceci est optionnel.
Cela donne quelque chose comme ça :
Et si tu supprimes la clause WHERE, tu obtiens tous les produits de tous les manufacturiers.
À la place de m.manufacturers_id, dans la clause SELECT, tu dois aussi pouvoir mettre le nom si tu as ça en base.
Xavier
Pour les jointures, il est plus propre d'utiliser le mot clé JOIN. Et plus simple d'utiliser des alias pour les noms de tables, mais ceci est optionnel.
Cela donne quelque chose comme ça :
SELECT pd.products_name, p.products_quantity, pd.products_description, m.manufacturers_id FROM manufacturers m INNER JOIN products p ON p.manufacturers_id = m.manufacturers_id INNER JOIN products_description pd ON p.products_id = pd.products_id WHERE manufacturers.manufacturers_id = '25'
Et si tu supprimes la clause WHERE, tu obtiens tous les produits de tous les manufacturiers.
À la place de m.manufacturers_id, dans la clause SELECT, tu dois aussi pouvoir mettre le nom si tu as ça en base.
Xavier
alesque51
Messages postés
14
Date d'inscription
mardi 10 novembre 2009
Statut
Membre
Dernière intervention
9 décembre 2009
9 déc. 2009 à 18:52
9 déc. 2009 à 18:52
Merci à tous, je commence un peu à comprendre et j'arrive presque à mes fins !!!
Vous avez raison, faut lire plein de tutos, les recouper, et tester plein de trucs, histoire de comprendre !
Vous avez raison, faut lire plein de tutos, les recouper, et tester plein de trucs, histoire de comprendre !
8 déc. 2009 à 19:06
select age, sum(poids) from eleves where age < 15 group by age
dsl