|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() cyril menigozIngénieur Infotronique : sécurité qualité et architecture réseaux Inscription : février 2010 Messages : 40 ![]() |
Bonjour,
J'essaye de développer un programme de localisation sur les adresses mac des box alentours. Voici la structure de mes tables : Code :
à un moment T, je capte 5 box et je veux pouvoir demander à ma base de donner de me donné l'enregistrement commun à ces 5 box. je ne peux utiliser une clause "and" basique ( logique ) donc j'ai essayé une requête combinant un select pour chaque élément que je cherche à avoir: Code :
SELECT * FROM wifiprint , scan WHERE wifiprint.Id_Scan = Scan.ID_Scan AND (SELECT id_scan FROM WifiPrint WHERE wifiprint.BSSID LIKE '%38:46:08:dc:6e:8e%') AND (SELECT id_scan FROM wifiprint WHERE wifiprint.BSSID LIKE '%c0:3f:0e:c7:c8:f4%') ; Code :
ERROR 1242 (21000): Subquery returns more than 1 row D'avance Merci |
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
1) Les jointures s'écrivent depuis 20 ans avec l'opérateur JOIN ; il serait temps de s'y mettre !
2) L'utilisation d'alias pour les tables est fortement recommandé dès qu'il y a plus d'une table dans la requête. Cela facilite l'écriture et la lecture de celle-ci. Il faut ensuite utiliser systématiquement ces alias devant chaque colonne nommée pour savoir facilement de quelle table elle vient. 3) Il vaut mieux éviter la guerre des étoiles ! 4) Pas sûr d'avoir compris ton besoin. Un jeu de données et le résultat attendu aiderait à la compréhension. Cette requête conviendrait-elle ? Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
10
|
|
|
#3 | ||
|
Invité régulier
![]() cyril menigozIngénieur Infotronique : sécurité qualité et architecture réseaux Inscription : février 2010 Messages : 40 ![]() |
Tout d'abord merci de ta rapidité
1) en effet, je n'ai pas forcément l'habitude d'en faire, je vais corriger 2) idem 3) sur le coup j'avoue que c'est de la fainéantise, mais j'allais le faire ensuite, ne serais qu'a cause de la taille de ma table 4) En faite c'est le principe d'empreinte : je veux un maximum de concordance entre une liste et le résultat d'un select ( qui correspond du coup à un identifiant dans mon cas Id_Scan ) en voici un ( j’abrège un max la valeur des données, une base comme celle que je fais contiendra à terme des centaines de milliers de tuple ) données Code :
Je suis entrain de me rendre compte qu'il y a peut être une solution plus optimal pour faire une telle recherche |
||
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Sur ton dernier exemple de données et la liste à comparer, tu peux faire cette requête :
Code :
Tu obtiens donc un classement de la meilleure concordance par rapport à liste vers la moins bonne. C'est facile en testant sur des valeurs exactes car on peut mettre la liste dans un IN mais ta première requête était avec des LIKE et là il faut faire la série de LIKE séparés par des OR, comme dans ma première requête.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#5 |
|
Invité régulier
![]() cyril menigozIngénieur Infotronique : sécurité qualité et architecture réseaux Inscription : février 2010 Messages : 40 ![]() |
Je n'obtiens aucune valeur, cela doit venir de la façon dont j'écris les éléments de la liste, avec le like j'ai vu qu'il fallait que je les écrive comme cela :
|
|
|
00
|
|
|
#6 |
![]() ![]() |
Donne ta requête.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|
00
|
|
|
#7 | ||
|
Invité régulier
![]() cyril menigozIngénieur Infotronique : sécurité qualité et architecture réseaux Inscription : février 2010 Messages : 40 ![]() |
Code :
|
||
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
salut,
attention si tu utilises in % n'est plus un caractère joker... comme dans like, tu dois utiliser les valeurs exactes
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
|
|
#9 | ||
![]() ![]() |
Comme dit plus haut, tu ne peux pas employer la syntaxe du LIKE dans le IN. Il faut faire la série de LIKE séparés par des OR.
col IN (a, b) est équivalent à col = a OR col = b Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#10 |
|
Invité régulier
![]() cyril menigozIngénieur Infotronique : sécurité qualité et architecture réseaux Inscription : février 2010 Messages : 40 ![]() |
Merci,
Cela fonctionne parfaitement est ce que vous voulez que je mettes le bout de code java finale des fois que ça aide quelqu'un d'autre ? ( je bosse sur de l'android ) Encore merci |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 1 802 ![]() |
à toi de voir
__________________
soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com