Flux rss
Rechercher : dans
Par :

Requête SQL

Mougeole, le mercredi 17 mai 2006 à 09:09:20 
 Signaler ce message aux modérateurs

Bonjour

J'ai un problème avec une requête SQL.

J'ai une table contenant des cellules et une table contenant des services

table CELLULES (IdCellule,NomCellule,RefCellule)

table SERVICES (IdService,NomService)

On note que RefService et une clé étrangère qui fait référence à la table SERVICES.

Je voudrai séléctionner le nom d'un service pour une cellule donnée

Voici ma requête:



SELECT NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdService WHERE NomCellule = Cellule 2; 


Ce qui ne va pas dans cette requête c'est que si on a une cellule 2 dans le service 1 et une cellule 2 dans le service 2 (ce qui est possible) ma requête retoiurne 2 valeur. Or il m'enfaudrait une seule.


Est-ce que quelqu'un a une idée?

Merci d'avance.

1

Wale, le mercredi 17 mai 2006 à 10:55:15

Salut,

Avec DISTINCT ?

Répondre à Wale

2

Mougeole, le mercredi 17 mai 2006 à 11:01:29

Salut

Merci pour ta réponse.

J'ai déjà essayer avec distinct ça ne marche pas.

Il existe une cellule 2 dans le service 1,2,3 et 4.

Du coup même avec un distinct il séléctionne

service 1
service 2
service 3
service 4

Répondre à Mougeole

3

PhP, le mercredi 17 mai 2006 à 12:51:22

Bjr

Si tu as plusieurs cellules 2 alors c'est que CelluleID n'est pas une clé primaire ni à défaut unique : donc tu ne peux pas !

Tu dois obligatoirement préciser le id du service : d'ailleurs comment sais-tu de quelle "cellule 2" il s 'agit, comment la distingues-tu ?


SELECT NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdService WHERE NomCellule = Cellule 2 and IdService = xxx; 


Si tu ne connais pas l'ID du service .. y'a comme qui dirait un gros pb => mauvaise analyse : revoit le schéma de ta base de données et ajoute des clés primaires ... :-(

@+

PhP 

Répondre à PhP

4

Mougeole, le mercredi 17 mai 2006 à 13:27:45

Salut PhP

Tu n'a pas bien compris mon problème : IdCellule est bien une clé primaire unique.

Mais il n'y a pas qu'une seule cellule 2.

Chaque cellule contient des employés.

Il se trouve que si ces cellules ont le même nom, les employés de la cellule 2 service1 ne sont pas les mêmes que les employés de la cellule 2 service 2.

Et d'ailleurs chaque enregistrement et unique : il y a juste le champs RefService qui change.

Ensuite c'est vrai qu'il est plus propre de mettre l'IdService que le NomService dans la condition WHERE.

Mais le problème reste entier : comment récupérer cette IdService?

Répondre à Mougeole

5

PhP, le mercredi 17 mai 2006 à 14:02:23

Oui j'avais zappé le coup des noms ...

Mais alors pourquoi puisque tu as une clé unqiue IDCellule ne l'utilises-tu pas à la place du nom ?

Dans le where tu fais : where IDCellule = xxxx

Maintenant c'est sûr que si tu ne connais aucune clé ni IDCellule ni IDService ... A quoi ca sert alors d'avoir mis des clés dans tes tables alors ? LOL
Tout ca pour dire que dans ton application tu dois conserver les clés quelque part même si tu ne les affiches pas.

PhP 

Répondre à PhP

6

Mougeole, le mercredi 17 mai 2006 à 14:26:08

Ca c'est pas con!!

J'étais en train de chercher comment faire une concaténation du genre :

... WHERE NomService "concatène" NomCellule...

Alors que j'ai des clé primaire!!! (OU j'habite le soleil tape fort aujourd'hui)

Dans phpMyAdmin j'ai tester ça :

SELECT NomCellule, NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdService WHERE IdCellule = 9;

... et ça marche!

Fantastique.

Là j'ai mis l'IdCellule en dure mais je pense que dans un formulaire on peut récupérer cette Id avec un champ caché.

Merci encore

Salut

Répondre à Mougeole

7

 Mougeole, le mercredi 17 mai 2006 à 14:27:31

Ca c'est pas con!!

J'étais en train de chercher comment faire une concaténation du genre :

... WHERE NomService "concatène" NomCellule...

Alors que j'ai des clé primaire!!! (OU j'habite le soleil tape fort aujourd'hui)

Dans phpMyAdmin j'ai tester ça :

SELECT NomCellule, NomService FROM CELLULES INNER JOIN SERVICES ON RefService = IdService WHERE IdCellule = 9;

... et ça marche!

Fantastique.

Là j'ai mis l'IdCellule en dure mais je pense que dans un formulaire on peut récupérer cette Id avec un champ caché.

Merci encore

Salut

Répondre à Mougeole
[Access] : Requete SQL en VBa (Résolu) Salut à tous je cherche de l'aide pour creer une requete SQL dans le VB fournit avec Access en faite je veux ecrire une requete qui tiendra compte de ce que j'aurais choisit dans ma zone de liste exemple: SELECT PC.nom_PC FROM PC WHERE utilisateur... www.commentcamarche.net/forum/affich-2747677-access-requete-sql-en-vba
Construction requete SQL et select multiple (Résolu) Bonjour à tous, Nouvelle question, et j'espère, la dernière. On va dire que j'abuse :) J'ai donc une page PHP dans la quelle s'affiche une liste d'adhérents. Cette liste est obtenue par la construction, on va dire dynamique, d'une requete SQL. Cette... www.commentcamarche.net/forum/affich-8504611-construction-requete-sql-et-select-multiple
Afficher resultat requete sql dans datagrid (Résolu) Bonjour, Je debute sous VB 6 et j'aimerai afficher le résultat d'une requete sql dans un datagrid. J'ai mis ma requete dans une variable string nommée requete. Sur un site j'ai obtenu le code suivant : Sub remplir_grid() Dim sql As String Dim ds As... www.commentcamarche.net/forum/affich-6928886-afficher-resultat-requete-sql-dans-datagrid
Requete SQL, selection des dates recentes (Résolu)Bonjour, je cherche à faire un requete SQL, à mon avis pas tres difficile pour un initié. Voila en fait j'ais une talbe de procedure avec 1 identifiant auto. Chaque ligne correspond à une procedure de mise à jour. Chaque procedure de mise à jour est... www.commentcamarche.net/forum/affich-5389693-requete-sql-selection-des-dates-recentes
[PHP] trier une requete sql sur les dates (Résolu)Bonjour, J'ai une requete sql qui sélectionne tout mes membres avec les dates d'inscription et de dèrnière connexion. voici le code $query = 'SELECT id_user,login,mail,newslettre,web,DATE_FORMAT(anniversaire, "%d/%m/%y") as... www.commentcamarche.net/forum/affich-9370718-php-trier-une-requete-sql-sur-les-dates
Valeur liste déroulante dans requete sql ? (Résolu)Bonjour, J'ai 1 ptit souci qui à première vue, ne sont pas bien compliqué : Sur une meme page de mon site, j'ai une liste déroulante et une requete SQL. Comment receuillir la valeur de ma liste déroulante dans ma requete SQL ? liste réroulante : www.commentcamarche.net/forum/affich-4149954-valeur-liste-deroulante-dans-requete-sql
Le langage SQLQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,... www.commentcamarche.net/contents/sql/sqlintro.php3
SQL - Sous-requêtesExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en... www.commentcamarche.net/contents/sql/sqlssreq.php3
Exécution de requêtes avec JDBCExécution d'une requête SQL Pour exécuter une requête SQL, il s'agit dans un premier temps de créer un objet Statement, pouvant être obtenu à partir de l'objet Connection. Un objet ResultSet permettra de récupérer les données en provenance de... www.commentcamarche.net/contents/jdbc/jdbcexec.php3