Php ; mysql

Fermé
houdaelfa12 Messages postés 5 Date d'inscription mardi 11 juillet 2017 Statut Membre Dernière intervention 14 juillet 2017 - 11 juil. 2017 à 01:51
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 - 14 juil. 2017 à 14:03
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



A voir également:

3 réponses

theolius Messages postés 8 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 12 juillet 2017
11 juil. 2017 à 16:25
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
0
houdaelfa12 Messages postés 5 Date d'inscription mardi 11 juillet 2017 Statut Membre Dernière intervention 14 juillet 2017
13 juil. 2017 à 22:10
en fait j'ai des 3 tables
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
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
13 juil. 2017 à 22:40
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 :

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"
0
houdaelfa12 Messages postés 5 Date d'inscription mardi 11 juillet 2017 Statut Membre Dernière intervention 14 juillet 2017
13 juil. 2017 à 23:12
merci , oui je bosses dans le SGBD Mysql , et je veux savoir c'est quoi E.filiere ? c'est quoi le E et une autre chose , pour l'exemple que tu mas donne tas précisé la date mais mois je veux faire une date de pret et retour quelconque ?
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649 > houdaelfa12 Messages postés 5 Date d'inscription mardi 11 juillet 2017 Statut Membre Dernière intervention 14 juillet 2017
14 juil. 2017 à 01:53
E c'est ce qu'on appelle un alias.

Et pour la date... c'est un exemple. A toi de l'adapter à tes besoins
0
houdaelfa12 Messages postés 5 Date d'inscription mardi 11 juillet 2017 Statut Membre Dernière intervention 14 juillet 2017
14 juil. 2017 à 02:50
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);
0
houdaelfa12 Messages postés 5 Date d'inscription mardi 11 juillet 2017 Statut Membre Dernière intervention 14 juillet 2017
Modifié le 14 juil. 2017 à 13:58
$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 :ICI

Merci d'y penser dans tes prochains messages.
Jordane45

jai essaye ca mais ca ne marche plus :/
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
14 juil. 2017 à 14:03
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
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')

0