Php ; mysql
houdaelfa12
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je veux compter des emprunteurs qui ont a fait un prêt d'ouvrages a partir de date pret qui est comprise entre une date1 et date 2 , le comptage des emprunteurs est selon leur sexe (fille, garcon) et selon la filière , ,dans ma base il ya la table emprunteur(N_inscription,nom,prenom,sexe,filiere)
et la table pret(N_pret,datepret , dateretour, N_inventaire) je veux bien savoir la requete de sql
je veux compter des emprunteurs qui ont a fait un prêt d'ouvrages a partir de date pret qui est comprise entre une date1 et date 2 , le comptage des emprunteurs est selon leur sexe (fille, garcon) et selon la filière , ,dans ma base il ya la table emprunteur(N_inscription,nom,prenom,sexe,filiere)
et la table pret(N_pret,datepret , dateretour, N_inventaire) je veux bien savoir la requete de sql
A voir également:
- Php ; mysql
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert - Forum PHP
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
3 réponses
Bonjour,
Si j’ai bien compris, tu aimerais créer une requête capable de trouver le nombre de personnes qui a emprunté un « item » selon son sexe et sa filière.
Pour ce faire, une des possibilités est d’utiliser la fonction COUNT(*).
Sauf que, selon tes tables, il manque visiblement la liaison entre l’item en prêt et l’emprunteur.
Comment sais-tu que, par exemple, M. Dupont a emprunté le livre «fahrenheit 451 » ?
Cordialement
Si j’ai bien compris, tu aimerais créer une requête capable de trouver le nombre de personnes qui a emprunté un « item » selon son sexe et sa filière.
Pour ce faire, une des possibilités est d’utiliser la fonction COUNT(*).
Sauf que, selon tes tables, il manque visiblement la liaison entre l’item en prêt et l’emprunteur.
Comment sais-tu que, par exemple, M. Dupont a emprunté le livre «fahrenheit 451 » ?
Cordialement
Bonjour,
Pour commencer... il faudrait savoir avec quel SGBD tu bosses ... (mysql, oracle, access... autre ???)
Ensuite.. dans la majorité des SGBD ... tu pourras réaliser tes deux requêtes simplement à l'aide des instructions SELECT COUNT et WHERE et éventuellement du GROUP BY !
Un truc du genre :
NB : N'utilises pas de caractères accentués dans le nom de tes tables ni dans le nom de tes champs. Ta table "prêts" doit être renommée en "pret"
Pour commencer... il faudrait savoir avec quel SGBD tu bosses ... (mysql, oracle, access... autre ???)
Ensuite.. dans la majorité des SGBD ... tu pourras réaliser tes deux requêtes simplement à l'aide des instructions SELECT COUNT et WHERE et éventuellement du GROUP BY !
Un truc du genre :
SELECT E.filiere , E.sexe, COUNT(E.N_inscription) as NB FROM pret P LEFT JOIN emprunteur E ON E.N_inscription = P.N_inscription LEFT JOIN ouvrages O ON O.N_inventaire = P.N_inventaire WHERE P.datepret >= '2017-01-01' AND P.dateretour <= '2017-07-01' GROUP BY E.filiere , E.sexe
NB : N'utilises pas de caractères accentués dans le nom de tes tables ni dans le nom de tes champs. Ta table "prêts" doit être renommée en "pret"
ok merci bcq , une dernière question , en fait je veux supprimer UN PRET du table pret et en même temps je veux supprimer les champs qui sont relies avec cette table jai essaye ce code mais ca ne marche pas
$sql="DELETE e,p,o
FROM emprunteur e
INNER JOIN pret p
ON e.N_inscription=p.N_inscription INNER JOIN ouvrages o.N_inventaire=p.N_inventaire where (N_pret=$N_pret)";
mysql_query($sql);
$sql="DELETE e,p,o
FROM emprunteur e
INNER JOIN pret p
ON e.N_inscription=p.N_inscription INNER JOIN ouvrages o.N_inventaire=p.N_inventaire where (N_pret=$N_pret)";
mysql_query($sql);
$sql1="DELETE * FROM emprunteur WHERE N_inscription IN (SELECT N_inscription FROM pret WHERE (N_pret=$N_pret)" ; $sql2="DELETE N_inventaire FROM ouvrages where N_inventaire IN (SELECT N_inventaire FROM pret WHERE (N_pret=$N_pret) "; $sql3="DELETE datepret,dateretour FROM pret where (N_pret=$N_pret)"; mysql_query($sql1); mysql_query($sql2); mysql_query($sql3); if($sql1||$sql2||$sql3) { echo("La suppression à été correctement effectuée<br><br>") ; echo("<a href=\"afficher1.php\">afficher la liste </a>"); }
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICIMerci d'y penser dans tes prochains messages.Jordane45 |
jai essaye ca mais ca ne marche plus :/
1 - NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
2 - Attention, l'extension mysql était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
À la place, tu peux (<gras DOIS </gras> ) utiliser l'extension MySQLi ou l'extension PDO_MySQL
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO, pense à activer la gestion des erreurs : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
3 - Tu dis que ça ne "marche pas" .. c'est à dire ??
As tu au moins essayé tes requêtes DIRECTEMENT dans ta bdd (via phpmyadmin par exemple) ???
Car ton souci vient de ta syntaxe du DELETE ....
En fait, tu peux faire un delete sur plusieurs tables en même temps... c'est juste qu'il faut correctement l'écrire !
Comme dans l'exemple donné dans la doc (https://dev.mysql.com/doc/refman/5.7/en/delete.html
Essaye :
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
2 - Attention, l'extension mysql était obsolète en PHP 5.5.0, et a été supprimée en PHP 7.0.0.
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
À la place, tu peux (<gras DOIS </gras> ) utiliser l'extension MySQLi ou l'extension PDO_MySQL
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Si tu choisis PDO, pense à activer la gestion des erreurs : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
3 - Tu dis que ça ne "marche pas" .. c'est à dire ??
As tu au moins essayé tes requêtes DIRECTEMENT dans ta bdd (via phpmyadmin par exemple) ???
Car ton souci vient de ta syntaxe du DELETE ....
En fait, tu peux faire un delete sur plusieurs tables en même temps... c'est juste qu'il faut correctement l'écrire !
Comme dans l'exemple donné dans la doc (https://dev.mysql.com/doc/refman/5.7/en/delete.html
DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id;
Essaye :
DELETE emprunteur , pret ,ouvrages FROM emprunteur INNER JOIN pret ON emprunteur.N_inscription=pret.N_inscription INNER JOIN ouvrages ON ouvrages.N_inventaire=pret.N_inventaire WHERE (pret.N_pret='$N_pret')
emprunteur(N_inscription,nom, prenom,sexe,filiere)
ouvrages(N_inventaire,cote,auteur)
prêt(N_pret,datepret,dateretour,N_inscription,N_inventaire)
un emprunteur(N_inscription) realise un prêt pendant la date de pret et la date de retour
moi je veux calculer le nombres des emprunteurs selon la filière et selon leur sexe pendant la date de pret et la date de retour , je veux 2 requetes sql
une requête pour calculer les emprunteurs selon leur filière
et l'autre requête pour calculer le nombre d'emprunteurs selon leur sexe
jespre tu as compris