Aide pour une requête assez simple
Résolu
Mosa
-
jeremims -
jeremims -
Bonjour,
Dans une base mysql j'ai créé deux tables, une table société et une table conf société
la table SOCIETE est constituée ainsi :
SOCIETE_ID
SOCIETE_NOM
SOCIETE_DOMAINE
SOCIETE_LOGO
SOCIETE_ID est l'index et unique. Jeu de donnée d'exemple :
1 | TOTO | toto.com | toto.gif
2 | TITI | titi.com | titi.gif
3 | TUTU | tutu.com | tutu.gif
la table SOCIETE_CONF est constituée ainsi :
SOCIETE_CONF_ID
SOCIETE_CONF_PARAM
SOCIETE_CONF_VALUE
SOCIETE_CONF_ID a une contrainte d'intégrité sur la table SOCIETE avec SOCIETE_ID et SOCIETE_CONF_ID
Voici un jeu de données
1 | STATUS | SAS |
1 | IPADRESSE | 11.11.11.11 |
1 | PAYS | FR |
2 | STATUS | EURL |
2 | IPADRESSE | 10.10.10.10 |
2 | PAYS | ES |
1 | STATUS | SASU |
1 | PAYS | DE |
j'ai les contraintes pour la table SOCIETE :
SOCIETE_DOMAINE = 'titi.com'
et SOCIETE_CONF
SOCIETE_CONF_ID=SOCIETE_ID correspondant a SOCIETE_DOMAINE = 'titi.com'
j'aimerai toutes les données alignées ainsi
2, TITI, titi.com,titi.gif, EURL, 10.10.10.10
est ce un UNION que je dois utiliser ? je n'arrive pas a structurer ma requette ... je n'ai pas les idées claires. .. pouvez vous m'aider
En question complémentaire, si je souhaite avoir le champs IPADRESSE de la SOCIETEID = 2 si elle existe, est ce possible ?
Merci de votre aide précieuse.
Dans une base mysql j'ai créé deux tables, une table société et une table conf société
la table SOCIETE est constituée ainsi :
SOCIETE_ID
SOCIETE_NOM
SOCIETE_DOMAINE
SOCIETE_LOGO
SOCIETE_ID est l'index et unique. Jeu de donnée d'exemple :
1 | TOTO | toto.com | toto.gif
2 | TITI | titi.com | titi.gif
3 | TUTU | tutu.com | tutu.gif
la table SOCIETE_CONF est constituée ainsi :
SOCIETE_CONF_ID
SOCIETE_CONF_PARAM
SOCIETE_CONF_VALUE
SOCIETE_CONF_ID a une contrainte d'intégrité sur la table SOCIETE avec SOCIETE_ID et SOCIETE_CONF_ID
Voici un jeu de données
1 | STATUS | SAS |
1 | IPADRESSE | 11.11.11.11 |
1 | PAYS | FR |
2 | STATUS | EURL |
2 | IPADRESSE | 10.10.10.10 |
2 | PAYS | ES |
1 | STATUS | SASU |
1 | PAYS | DE |
j'ai les contraintes pour la table SOCIETE :
SOCIETE_DOMAINE = 'titi.com'
et SOCIETE_CONF
SOCIETE_CONF_ID=SOCIETE_ID correspondant a SOCIETE_DOMAINE = 'titi.com'
j'aimerai toutes les données alignées ainsi
2, TITI, titi.com,titi.gif, EURL, 10.10.10.10
est ce un UNION que je dois utiliser ? je n'arrive pas a structurer ma requette ... je n'ai pas les idées claires. .. pouvez vous m'aider
En question complémentaire, si je souhaite avoir le champs IPADRESSE de la SOCIETEID = 2 si elle existe, est ce possible ?
Merci de votre aide précieuse.
A voir également:
- Aide pour une requête assez simple
- 14 simple - Guide
- Simple pdf - Télécharger - PDF
- Simple ocr - Télécharger - Bureautique
- Simple file locker - Télécharger - Sécurité
- Simple comic - Télécharger - Vie quotidienne
3 réponses
Bonjour,
Non, je pense plutôt que c'est un JOIN ( ou LEFT JOIN ou INNER JOIN ou RIGHT JOIN ...)
Oui Il suffit de mettre un WHERE dans ta requête
est ce un UNION que je dois utiliser ?
Non, je pense plutôt que c'est un JOIN ( ou LEFT JOIN ou INNER JOIN ou RIGHT JOIN ...)
En question complémentaire, si je souhaite avoir le champs IPADRESSE de la SOCIETEID = 2 si elle existe, est ce possible
Oui Il suffit de mettre un WHERE dans ta requête
Je pense également que tu n'as pas les idées claires.
Quand tu écris "j'ai les contraintes pour la table SOCIETE :
SOCIETE_DOMAINE = 'titi.com' ", je pense que tu confonds "contrainte" et "critère de recherche".
Pourquoi as-tu choisi de structurer ainsi ta table "conf société" : as-tu envisagé de la structurer avec une colonne STATUS, une colonne PAYS, IPADRESSE, etc... ?
Quand tu écris "j'ai les contraintes pour la table SOCIETE :
SOCIETE_DOMAINE = 'titi.com' ", je pense que tu confonds "contrainte" et "critère de recherche".
Pourquoi as-tu choisi de structurer ainsi ta table "conf société" : as-tu envisagé de la structurer avec une colonne STATUS, une colonne PAYS, IPADRESSE, etc... ?
Bonjour,
Tu peux essayer une requête de ce genre :
Par contre, ce n'est effectivement pas très souple puisque tu devras modifier la requête si tu rajoutes un type de paramètre.
Il y a sans doute des façons plus compliquées de faire qui résoudront ce problème quelque soit le nombre de colonnes à transposer, mais je ne connais pas assez MySQL pour y répondre.
Xavier
Tu peux essayer une requête de ce genre :
SELECT s.*, st.societe_conf_value as statut, ip.societe_conf_value FROM societe s LEFT OUTER JOIN societe_conf st ON st.societe_conf_id = s.societe_id AND st.societe_conf_param = 'STATUS' LEFT OUTER JOIN societe_conf ip ON ip.societe_conf_id = s.societe_id AND ip.societe_conf_param = 'IPADRESSE'
Par contre, ce n'est effectivement pas très souple puisque tu devras modifier la requête si tu rajoutes un type de paramètre.
Il y a sans doute des façons plus compliquées de faire qui résoudront ce problème quelque soit le nombre de colonnes à transposer, mais je ne connais pas assez MySQL pour y répondre.
Xavier