Problèmes création de requêtes spécifiques

Fermé
Captainmarti1664 Messages postés 2 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 17 mars 2015 - 17 mars 2015 à 11:14
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 - 17 mars 2015 à 15:06
Bonjour je doit crer une base de donnés pour un de mes cours d'informatiques sur des peintres des tableaux et des musés.
Il faut donc que je crée des requêtes SQL en mode ébauche, j'arrive à creer les basiques assez facilement le problème est pour celles qui sont plus complexe. Sa m'ennuie parce que je pense pas me tromper sur beaucoup de chose mais elles ne sont jamais valide. Je vais vous marquer ce que je souhaite voir apparaître et ce que je tape.

Pour commencer j'ai 3 tables:
une peintres dont les champs sont: -CodeP, -Nom, -Prenom, -Naissance, -Desces, -Lieu_de_naissance, -Pays_de_naissance, -Lieu_de_deces, -Pays_de_deces

Une tableaux dont les champs sont: -Code_tableau, -Nom_tableau, -Annee, - CodeP, -CodeM

Une musee dont les champs sont: -CodeM, -Nom_musse, -Ville, -Pays.


Donc j'aimerai crée les requêtes suivantes:
La liste des tableaux peint après 1918 voila ce que j'inscris: SELECT "Nom_Tableau", "Annee", FROM "tableau" WHERE "Annee" => 1918

Les Peintres mort entre 1914 et 1918 voila ce que j'inscrit: SELECT "Nom" "Deces" FROM "peintres" WHERE "Deces" BETWEEN '1914' AND '1918'

La liste des lieux de décès plus les ville qui ont vue au moins deux peintre y mourir: SELECT "Lieu_de_deces", count(*)=2 FROM "peintres"

La liste des tableaux peint après 1918 celle la je n'arrive absolument pas a trouver comment l'écrire

pareil j'aimerai faire la liste des peintres et de leur tableaux classés par ordres alphabétique la j'essaye sa : SELECT "Nom" "Nom_tableau" "Annee" FROM "peintres" "tableaux" WHERE 'peintres.CodeP=tableaux.CodeP' ODER BY "Nom" "Nom_tableau"

voila bref je galère terrible depuis ce week-end si quelqu'un pouvais m'aider sa serait bien cool

Merci d'avance a tous, CaptainMart1664
A voir également:

3 réponses

jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658
17 mars 2015 à 11:32
Bonjour,


La liste des tableaux peint après 1918 voila ce que j'inscris: SELECT "Nom_Tableau", "Annee", FROM "tableau" WHERE "Annee" => 1918

Première chose... pour les comparaison ... on utilise SUPERIEUR OU EGAL et non pas EGAL OU SUPERIEUR.
donc
 WHERE "Annee" => 1918 

A remplacer par :
 WHERE "Annee" >= 1918 



Les Peintres mort entre 1914 et 1918 voila ce que j'inscrit: SELECT "Nom" "Deces" FROM "peintres" WHERE "Deces" BETWEEN '1914' AND '191

IL ne faut pas oublier de séparer chaque champ du SELECT ... par une virgule...et ne pas mettre de QUOTES autour des noms de champs et de tables....
SELECT Nom,Deces 
FROM peintres 
WHERE Deces BETWEEN '1914' AND '191'



La liste des lieux de décès plus les ville qui ont vue au moins deux peintre y mourir: SELECT "Lieu_de_deces", count(*)=2 FROM "peintres"

Oula... tu ne peux pas faire de comparaison directement dans le select...(ça c'est dans le WHERE qu'il faut le gérer....)
Et à la limite.. pour ton besoin.. il faudrait passer par une sous requête.
Quelque chose du genre:

SELECT Lieu_de_deces, COUNT(*) AS "NB"
FROM peintres
GROUP BY peintres
HAVING COUNT(*) >= 2

0
Captainmarti1664 Messages postés 2 Date d'inscription mardi 17 mars 2015 Statut Membre Dernière intervention 17 mars 2015
17 mars 2015 à 13:27
Merci de ton aide j'ai suivi tes conseil mais j'ai toujours un soucis en fait
pour la liste des tableaux après 1918 je mets donc: "Nom_Tableau", "Annee", FROM "tableau" WHERE "Annee" >= 1918
problème le logiciel me dit qu'il y a une erreur de syntax je suppose au vue de tes explications que ce sont les QUOTES qui pose problème mais du coup je doit retirer lesquelles ?

pour la seconde je tape donc SELECT Nom,Deces FROM peintres WHERE Deces BETWEEN '1914' AND '1918'
mais il me marque cette fois,

Wrong data type: java.lang.IllegalArgumentException in statement [SELECT "Nom", "Deces" FROM "peintres" WHERE "Deces" BETWEEN '1914' AND '1918']

j'ai vérifié mes noms de champs si il correspondais bien a ce que je t'es transmit et je ne note aucune fautes mais la logiciel me marque sa quans j'exécute ma requêtes

Wrong data type: java.lang.IllegalArgumentException in statement [SELECT "Nom", "Deces" FROM "peintres" WHERE "Deces" BETWEEN '1914' AND '1918']

des idées s'il te plait ?
0
jordane45 Messages postés 38162 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 mai 2024 4 658
17 mars 2015 à 15:06

je suppose au vue de tes explications que ce sont les QUOTES qui pose problème mais du coup je doit retirer lesquelles ?

Toutes

Par contre.... avant d'essayer de coder tes requête directement depuis ton programme (en Java donc...semble t'il....) il faut commencer par les tester en DIRECT dans la BDD.
Soit par PhpMyadmin soit en utilisant un logiciel comme HeidiSql (regardes ici : https://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql

Et c'est seulement une fois que tu es sûr que tes requêtes sont bonnes.... que tu peux essayer de les intégrer dans ton programme..... et qu'on pourra se pencher sur le code côté JAVA.....



0