SQL Request

Résolu
Bonjour,

J'ai une table SQL "cell_infos" qui contient plusieurs champs dont le "network_cell_id", l'"arfcn" et le "bsci_sc" et je voudrais effectuer une requête SQL pour retrouver la liste des éléments dont les parametres "bsic_sc" et "arfcn" sont identique mais je ne sais pas comment formuler ma requête. L'exemple ci-dessous correspond bien à ce que je veux faire mais pour un couple de paramètres fixé:
SELECT * FROM `cell_infos` WHERE `bsic_sc`=307 AND `arfcn`=10786
et moi je veux pas préciser les valeurs je voudrais la liste entière
Je ne sais pas si je me suis faite comprendre mais si quelqu'un voit a peu près ce que je veux dire et a une idée je le remercierai bcp!

bonne journée
Configuration: Windows XP
Firefox 3.0.11

12 réponses

  1. Contributeur
    salut,

    as-tu essayé ça ?
    SELECT * FROM `cell_infos` WHERE `bsic_sc`=`arfcn`;
    0
    1. Je me suis mal exprimée ce que je veux ce n'est pas que les deux parametres aient la même valeur mais que par exemple dans ma table j'ai plusieurs enregistrements et je veux resortir la liste de ceux où la valeur du"bsci_sc" se répète et celle de l'"arfcn" aussi mais que les autrees parametres ont change. Voici un exemple:

      -------------------------------------|
      network_cell_id | arfcn | bsic_sc |
      -------------------------------------|
      22 | 10 | 2 |
      -------------------------------------|
      14 | 10 | 2 |
      -------------------------------------|
      100 | 4 | 7 |

      dans ce cas là je voudrais que ça me sorte les deux premières lignes psk l'arfcn et le bsic_sc ont les même valeurs
      0
      1. Contributeur
        essaie ça, je suis pas sûr des alias…
        SELECT DISTINCT * FROM `cell_infos` AS `original` WHERE EXISTS (SELECT * FROM `cell_infos` AS `copie` WHERE `original`.`bsic_sc` <> `copie`.`bsic_sc` AND `original`.`arfcn` = `copie`.`arfcn`);
        0
        1. T1 correspnd à quoi? le nom de ma table cad cell_infos?
          0
          1. Contributeur
            je l'ai changé entre temps avec original et copie, c'est plus clair
            0
        2. J'ai exécuté la requête mais j'ai une erreur du genre:
          #1054 - Unknown column 'T1.original' in 'where clause'
          0
          1. Et puis ce qui me gêne c'est qu'en aucun cas tu définis T1 c'est normal ??!!
            0
            1. J'ai modifié légèrement la requête:

              SELECT DISTINCT * FROM `cell_infos` AS `original` WHERE EXISTS (SELECT * FROM `cell_infos` AS `copie` WHERE `original`.`bsic_sc` <> `copie`.`bsic_sc` AND `original`.`arfcn` <> `copie`.`arfcn`)

              Mais ça me ressort toute la table ya pas de changement y a autant d'enregistrement que dans la table initiale !
              0
              1. Contributeur
                et avec égale, ça donne quoi ?
                SELECT DISTINCT * FROM `cell_infos` AS `original` WHERE EXISTS (SELECT * FROM `cell_infos` AS `copie` WHERE `original`.`bsic_sc` = `copie`.`bsic_sc` AND `original`.`arfcn` = `copie`.`arfcn`)
                0
                1. Oui j'avais essayé av le = aussi et ça donne la même chose donc c'est un peu bizzare j'essaie de comprendre la structure de la requête pr débugger
                  0
                  1. Tout compte fait (si j'ai bien compris) la requête ne fait pas ce que je veux.
                    Voilà ce que j'en ai compris:

                    SELECT DISTINCT * FROM `cell_infos` AS `original` WHERE EXISTS (SELECT * FROM `cell_infos` AS `copie` WHERE `original`.`bsic_sc` = `copie`.`bsic_sc` AND `original`.`arfcn` = `copie`.`arfcn`)

                    en 1er lieu elle va regarder les lignes où le bsic_sc de l'ancienne table et de la nouvelle s'ils sont égaux elle les stocke donc au final on se retrouve avec la meme table initiale :s
                    0
                    1. Contributeur
                      la requête est censée recherchée les doublons sur arfcn et bsic_sc.

                      source
                      0
                      1. Bonjour,

                        Merci pour la source maintenant c ok! Voici la bonne requête finalement:

                        FROM cell_infos T1
                        WHERE EXISTS (SELECT *
                        FROM cell_infos T2
                        WHERE T1.network_cell_id <> T2.network_cell_id
                        AND T1.arfcn = T2.arfcn
                        AND T1.bsic_sc = T2.bsic_sc)

                        On avait oublié par rapport à la précédente de préciser que le netswork_cell_id doit etre différent!

                        Bonne journée!
                        0
                        1. Contributeur
                          bien vu !
                          -;o)

                          bon courage pour la suite !
                          0