Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/10/2007, à 19:49

uncentimedeuros

[SQL]Plusieurs valeurs pour une même colonne

Bonjour,

Comment se représente en SQL le fait qu'une colonne d'une table maTable peut avoir plusieurs valeurs ?
Dans mon cas, je souhaite avoir une colonne adresse qui peut avoir 3 champs(adresse,ville,pays).
Par exemple si l'adresse se trouve en France, on ne remplit pas le pays
6, rue des Batignolles/paris/null
Si c'est à l'étranger :
220 East 42nd Street/new york/etats unis

Merci

Hors ligne

#2 Le 15/10/2007, à 21:34

nikko

Re : [SQL]Plusieurs valeurs pour une même colonne

Bonjour,

Et bien, la colonne peut prendre les valeurs des pays ou être null.
Je ne comprends pas trop ta question en fait. tongue

Nikko

Hors ligne

#3 Le 15/10/2007, à 21:50

uncentimedeuros

Re : [SQL]Plusieurs valeurs pour une même colonne

nikko a écrit :

Bonjour,

Et bien, la colonne peut prendre les valeurs des pays ou être null.
Je ne comprends pas trop ta question en fait. tongue

Nikko

Ma question est de savoir comment faire en sorte que j'obtienne une table de ce type:

CREATE TABLE maTable
  (
  adresse varchar(30), varchar(30),varchar(30)
  );

La colonne adresse a 3 valeurs.
Mais je ne sais pas comment cela s'exprime en SQL.

Dernière modification par uncentimedeuros (Le 15/10/2007, à 21:52)

Hors ligne

#4 Le 15/10/2007, à 21:59

nikko

Re : [SQL]Plusieurs valeurs pour une même colonne

Ah. Tu es obligé d'avoir une table comme ça?
Ce ne serait pas plus simple d'avoir?

CREATE TABLE adresse
  (
  rue varchar(30), ville (30), pays varchar(30)
  );

Sinon tu peux chercher sql array column dans google.
Je vois si je trouve de la doc en français.

Ps: c'est pour bosser avec quelle sgbdr?

Nikko

Dernière modification par nikko (Le 15/10/2007, à 22:02)

Hors ligne

#5 Le 15/10/2007, à 22:08

uncentimedeuros

Re : [SQL]Plusieurs valeurs pour une même colonne

nikko a écrit :

Ah. Tu es obligé d'avoir une table comme ça?
Ce ne serait pas plus simple d'avoir?

CREATE TABLE adresse
  (
  rue varchar(30), ville (30), pays varchar(30)
  );

Sinon tu peux chercher sql array column dans google.
Je vois si je trouve de la doc en français.

Ps: c'est pour bosser avec quelle sgbdr?

Nikko

Avec MySQL 4

Hors ligne

#6 Le 15/10/2007, à 22:22

nikko

Re : [SQL]Plusieurs valeurs pour une même colonne

Désolé, je ne trouve rien de probant pour mysql.
Tu ne peux vraiment pas faire une table avec 3 colonnes plutôt qu'une table avec 1 colonne contenant un tableau de valeurs?
Nikko

Hors ligne

#7 Le 17/10/2007, à 09:14

vitune

Re : [SQL]Plusieurs valeurs pour une même colonne

Regarde le site http://www.vi-tune.com il y a des bons exemples de requetes SQL mais dans un environnement ORACLE APEX et pas MySQL.

Hors ligne

#8 Le 17/10/2007, à 10:18

Martopioche

Re : [SQL]Plusieurs valeurs pour une même colonne

Bonjour, je vais rebondir sur les impressions de nikko pour trouver l'idée un peu poukrite. Une solution utilisée par une connaissance sous PostgreSQL était d'utiliser pour ce champ un tableau. Mais je ne te raconte pas les problèmes pour les gestions d'intégrité des données. De plus, j'ai souvent vu des problèmes d'homogénéité des données ("Etats Unis" est ils semblable à "Etats-Unis" ?). C'est une considération importante dans un contexte de recherche évidemment.

Bref, si tu a la main sur la base, je serai plus pour l'ajout des colonnes ville et pays. Tu gère les remplissages par ton applicatif, ce que tu dois déjà faire (sinon comment faire la différence entre adresse/paris/france et adresse/paris/etats unis ?). En plus, il sera plus simple de gérer les valeurs nulles. Ah bah oui : dans ton exemple "6, rue des Batignolles/paris/null", null est un champs de texte accessible par "= 'null'" (ou plutôt "like '%null'"). Dans le cas ["6, rue des Batignolles", "paris", null] null est une valeur null accessible par "is null".

Dernière modification par Martopioche (Le 17/10/2007, à 10:20)

Hors ligne

#9 Le 17/10/2007, à 10:31

mirmidon

Re : [SQL]Plusieurs valeurs pour une même colonne

Salut uncentimedeuros,

Le mieux est d'avoir les 3 colonnes dans la table.

Tu peux mettre les données en varchar si la table est destinée à contenir beaucoup de valeurs et que tu veux économiser de l'espace disque.

La solution de nikko est intéressante mais il faut correctement gérer les clés primaires afin de ne pas avoir de décalage si la table est utilisée intensément.

En règle générale, il faut structurer sa base en fonction des besoins futurs du système (vitesse, taille, taux d'utilisation) !


$ sudo make plaisir
Quand l'informatique redevient un plaisir.

The Ubuntu Counter Project - user number #10290

Hors ligne