IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Requête sql


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Requête sql
    Voila je vais faire simple je me prends la tête depuis 3 jours sur une requête sql si une âme charitable voulait bien m'aider.
    La requête comprend 4 tables dont je joins les descriptions si dessous.
    Je développe un module Joomla pour le composant sobi2


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    -- La table sobi2_fields qui contient tous les champ perso que l'on peut créer depuis l'admin de joomla
     
    CREATE TABLE IF NOT EXISTS `jos_sobi2_fields` (
      `fieldid` int(11) NOT NULL auto_increment,
      `fieldType` int(11) default NULL,
      `wysiwyg` tinyint(1) default NULL,
      `fieldDescription` text,
      `explanation` text,
      `is_free` tinyint(1) default NULL,
      `payment` double default NULL,
      `fieldChars` int(11) default NULL,
      `fieldRows` int(11) default NULL,
      `fieldColumns` int(11) default NULL,
      `preferred_size` int(11) default NULL,
      `CSSclass` text,
      `enabled` tinyint(1) default NULL,
      `isEditable` tinyint(1) default NULL,
      `is_required` tinyint(1) default NULL,
      `in_promoted` tinyint(1) default NULL,
      `in_vcard` tinyint(1) default NULL,
      `in_details` tinyint(1) NOT NULL,
      `position` int(11) default NULL,
      `in_search` int(2) NOT NULL,
      `with_label` tinyint(1) NOT NULL,
      `in_newline` tinyint(1) NOT NULL,
      `isUrl` int(2) NOT NULL,
      `checked_out` int(11) NOT NULL,
      `checked_out_time` datetime NOT NULL,
      `displayed` tinyint(1) NOT NULL,
      PRIMARY KEY  (`fieldid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=44 ;
     
     
    -- La table sobi2_fields_data qui contient toutes les données de ces champs perso
     
    CREATE TABLE IF NOT EXISTS `jos_sobi2_fields_data` (
      `id` int(11) NOT NULL auto_increment,
      `fieldid` int(11) default NULL,
      `data_txt` text,
      `data_bool` tinyint(1) default NULL,
      `data_int` int(20) default '0',
      `data_float` float default '0',
      `data_char` varchar(255) NOT NULL,
      `itemid` int(11) default NULL,
      `expiration` datetime default NULL,
      PRIMARY KEY  (`id`),
      KEY `itemid` (`itemid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=182 ;
     
     
    -- La table sobi2 item qui contient les entrées de l'annuaire
     
    CREATE TABLE IF NOT EXISTS `jos_sobi2_item` (
      `itemid` int(11) NOT NULL auto_increment,
      `title` varchar(255) default NULL,
      `hits` int(11) default NULL,
      `visits` int(11) default NULL,
      `published` tinyint(1) default NULL,
      `confirm` tinyint(1) NOT NULL,
      `approved` tinyint(1) NOT NULL,
      `archived` tinyint(1) default NULL,
      `publish_up` datetime default NULL,
      `publish_down` datetime default NULL,
      `checked_out` int(11) default NULL,
      `checked_out_time` datetime NOT NULL,
      `ordering` int(11) default NULL,
      `owner` int(11) NOT NULL,
      `icon` varchar(200) NOT NULL,
      `image` varchar(200) NOT NULL,
      `background` varchar(100) default NULL,
      `options` text,
      `params` text,
      `ip` varchar(15) NOT NULL,
      `last_update` datetime NOT NULL,
      `updating_user` int(11) NOT NULL,
      `updating_ip` varchar(15) NOT NULL,
      `metakey` varchar(200) NOT NULL,
      `metadesc` text NOT NULL,
      PRIMARY KEY  (`itemid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
     
     
    -- La table sobi2_language qui contient toutes les correspondances de langue du composant
     
    CREATE TABLE IF NOT EXISTS `jos_sobi2_language` (
      `langKey` varchar(50) NOT NULL default '',
      `langValue` varchar(255) NOT NULL default '',
      `description` text,
      `sobi2Section` varchar(10) NOT NULL default '',
      `fieldid` int(11) default NULL,
      `sobi2Lang` varchar(50) NOT NULL default '',
      PRIMARY KEY  (`langKey`,`sobi2Lang`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Si besoin je peux joindre des données d'exemple.

    Donc mon probleme j'ai créé un champ perso premium sont jos_sobi2_language.langKey = field_prem sont jos_sobi2_language.langValue = Premium, sont jos_sobi2_language.fieldid = 43, sont jos_sobi2_fields_data.data_txt peut etre 0 ou 1.

    J'ai donc besoin de recupérer les entrées de jos_sobi2_item que si le jos_sobi2_fields_data.data_txt = 1.

    je ne sait pas si j'ai été bien clair.
    Un peu d'aide svp
    Un carambar pour le gagnant

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Avec moins de fautes de français (j'ai mis 15 minutes à comprendre tes "sont") et une description des clés étrangères ainsi que la requête que t'as commencé à écrire, ça nous aiderait vachement à te répondre...
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Pour les requêtes justement je n'arrive a rien, je suis vraiment débutante qu'est-ce qu'une clé étrangère ?

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Une clé étrangère, c'est ce qui permet de savoir comment faire la jointure entre deux tables :

    Mettons une table "personne" (id, nom, prenom, sexe)
    Et une table "maison" (id, ardresse, surface)

    Là, comme ça, impossible de savoir qui habite dans quelle maison.

    Donc on rajoute un champ "maison_id" dans la table "personne", afin de dire "ben cette personne, elle habite dans la maison qui a pour id = maison_id".

    C'est ça une clé étrangère.
    Si tu n'en a pas dans tes tables, c'est peut-être pour ça que tu n'arrives pas à faire ta requête... Mais sans clé étrangère, personne ne pourra t'aider !
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    A vu de nez, je dirai que la colonne qui fait le lien entre jos_sobi2_fields et jos_sobi2_fields_data est fieldid (vu que c'est la clé primaire de jos_sobi2_fields).
    Je rejoins StringBuilder, il faudrait déclarer la clé étrangère dans jos_sobi2_fields_data, ne serait-ce que pour l'intégrité référentielle. De plus celà t'aiderai à trouver les liens entre les tables, et donc à écrire tes requêtes.

    Donc ici tu dois faire une jointure entre jos_sobi2_fields_data et jos_sobi2_fields.

    En cherchant bien sur le site tu devrais trouver les tutoriels qui vont bien, que ce soit pour les clés étrangères ou les jointures.

    Voilou, comme j'aime pas les carambars, je te laisse écrire la requête ...

    Tatayo.

Discussions similaires

  1. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  4. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37
  5. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/02/2003, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo