Requete SQL

Résolu
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005 - 28 juil. 2005 à 10:52
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005 - 29 juil. 2005 à 21:15
Bonjour j'ai un probleme

j'ai une requete avec 4 champs "1" "2" "3" "4" ,4 boolean retourne (0 ou 1)
et un 5em champs pour la valeur totale en binaire donc un truc du genre 1000
ou 1100
j'ai un formulaire avec 4 autres bouton cocher donc boolean aussi et un bouton
qd je clic sur le bouton je retourne la valeur binaire a quatre chiffre du genre si on clique sur 1 et 3 mon formulaire retourne 1010.
je recherche alors ds ma requette si le champs 5 connais 1010.
sa sa va mais jaimerai que ma requet me sorte 1010 mais ausi 1111 ,1110,1011
engros tout les champs ou il y a 1*1* maiis je bloque .

jai aussi testé de metre les 15 comdition sur mes pti bouton de mon formulaire mais sa ne marche pas.

19 réponses

cs_toods Messages postés 26 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 29 juillet 2005
28 juil. 2005 à 11:07
Salut
Dans une requête SQL, tu peux utiliser le %
Mais il faut utiliser un LIKE
Ex:
Select ---
FROM ---
WHERE bidule LIKE '1%1%'
mais le souci p'tet c'est qu'il te retournera aussi 10000010
il y a un moyen pour dire que le % correspond à 1 caractère, mais je ne sais plus lequel

Plus tu vas moins vite, moins tu vas plus loin
3
cs_lucio57 Messages postés 146 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 25 juillet 2007 2
28 juil. 2005 à 11:14
Toods je pense que ta requête ressortira aussi les valeurs du genre 1001 ou 0110 en fait toutes celle contenant deux 1. Sous SQL serveur tu peux egalement faire
CHAMP5 LIKE '1_1_' en utilisant _ tu indiques le nombre caractères attendus dans la chaîne. Mais comme précédement si ce n'est pas un format caractère qui est utilisé pour ton champ il faudra certainement le caster en nvarchar
3
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
28 juil. 2005 à 11:38
Merci les gars j'ai trouvé seul , mais doit y avoir plus simple bon deja jai fait mais 15 posibilité le 0000 men fou ^^

apres sa jai fait une colone par cas dans ma recherche sql du genre 0&-[2]&-[3]&0

jai fait ceci pour les 15 cas

apres jai recherché en fonction de mon resultat sous le formulaire la colone specifique donc la c la colone 0110
et donc sa marche !!! car si jai 1111 il me sort qd meme 0110 et si jai 1010 il me sort 0010 il me donne donc que les bon champs merci a tous
3
cs_toods Messages postés 26 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 29 juillet 2005
28 juil. 2005 à 11:38
et effectivement, il faut utiliser le "_"
=> WHERE bidule LIKE '1_1_'

Plus tu vas moins vite, moins tu vas plus loin
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juil. 2005 à 12:31
en effet, de la manière "brutale" effectuée par Zolt4n, c'est fonctionnel, mais je ne préfère pas imaginer le temps que celà prendrait pour remplir le tableau s'il y avait plus de 15 (2^4 -1 ) valeurs binaires.
perso, 8bits (2^8 -1), je ne m'amuserais pas à remplir un tableau de 127 lignes....

mon exemple reprenait les requêtes SQL d'antan...
à savoir que "11*" reprend tous les champs commençant par "11"
et que "11?" reprend tous les champs de 3 caractères, commençant par "11"

LIKE "1?1?" retourne donc
1010
1011
1110
1111

si on passait à 5, 8, ou 200 bits, il n'y aurais qu'une seule ligne à changer, à savoir par rapport à la longueur de "RezFormate" (cf ci-dessus)

la méthode de Lucio57 est correcte également, mais tout de même fastidueuse sur une très grande valeur de "Rez"

PCPT
3
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
28 juil. 2005 à 10:53
a oui si qqn connais si ds une requette sql on peut metre l'* ou le % sa serait sympas j'ai essayé mais rien a faire
0
cs_lucio57 Messages postés 146 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 25 juillet 2007 2
28 juil. 2005 à 11:08
Je ne suis pas sûr d'avoir tout compris mais ça pourrait donner ça

SELECT CHAMP5 FROM TABLE WHERE CHAMP1 = 1 AND CHAMP3=1
ou ça
je sais que ça marche sous SQL Server mais je ne sais pas sous les autres formes de base de donnéesSELECT CHAMP5 FROM TABLE WHERE SUBSTRING(CHAMP5,1,1) '1' AND SUBSTRING(CHAMP5,3,1) '1'
si ton champ 5 est au format nombre il faut peut être le caster SELECT CHAMP5 FROM TABLE WHERE SUBSTRING(CAST(CHAMP5 AS NVARCHAR),1,1) '1' AND SUBSTRING(CAST(CHAMP5 AS NVARCHAR),,3,1) '1'

J'espère que ça va t'aider ! Par contre j'ai pas tout compris ton second poste.

Bon courage
0
cs_toods Messages postés 26 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 29 juillet 2005
28 juil. 2005 à 11:18
exact, ca retournera également pour 1001, mais je pense pas 0110 vu que je demande à ce que le 1er caractère soit un 1
désolé

Plus tu vas moins vite, moins tu vas plus loin
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juil. 2005 à 11:37
de mémoire, çà serait plutôt :

'on suppose Rez as string contenant "1010"

dim RezFormate as string
RezFormate = Replace(Rez,"0","?") 'donc contient "1?1?"

(SQL) ".... LIKE '" & RezFormate & "'"

PCPT
0
cs_lucio57 Messages postés 146 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 25 juillet 2007 2
28 juil. 2005 à 11:46
Désolé Toods mais je me suis loupé tu as raison il ne renvoie pas 1001 parce qu'il n'y a pas de % avant. Toutes mes confuses !
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juil. 2005 à 11:52
mouarf.....
bien joué Zolt4n, on verra quand tu auras 5 ou 6 "bits" .....
PCPT
0
cs_lucio57 Messages postés 146 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 25 juillet 2007 2
28 juil. 2005 à 12:13
la remarque de pcpt est pertinente oarce que d'après ce que je comprends avec ta méthode tu ne peux plus rien changer à ta table tu devrais fonctionner directement sur tes champs bit et laisser tomber le 5ème champ de recap.

Si tu en as besoin tu peut le recréer par une vue en faisant

SELECT (CAST(CHAMP1 AS NVARCHAR) + CAST(CHAMP2 AS NVARCHAR) +CAST(CHAMP3 AS NVARCHAR) + CAST(CHAMP3 AS NVARCHAR)) AS CHAMP5 FROM TABLE

Avec cette méthode tu modifies uniquement ta vue. Ce qui est beaucoup plus pratique.Tu auras juste à faire ta requète en mettant :
SELECT * FROM VUE WHERE et tu lui glisse tes restrictions. Donc programme devient de se fait beaucoup plus modulable.
0
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
28 juil. 2005 à 14:45
lol C'est moi Zolt4n a savoir je debute acces sqlet vba depuis la semaine derniere donc j'apprend seul mais vous maidé pas mal et vous savez quoi j'ai la meme manip a faire que tout a lheure mais avec 12 champs qui peuvent allé de 0a 4 donc vite fait 12*12 144 * 5 720 colone bon on vas changer de methode hihi je vais essaye de faire se que vous avez dit on verasbien sy j'y arrive
0
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
28 juil. 2005 à 14:54
le probleme c'est que je change de donné sur mon formulaire et je ne voye pas comme faire meme avec le like 4_1_2_%
je c pas si je suis clair c'est le meme cas que tout a lheure
sauf que la j'ai 12 textbox qui vont de 0 a 4 (j'ai une table ou ceci est referencé) et dans mon formulaire je doit cherché qui a 4 au 1er textbox puis 2 au 8em ...
je doit faire tout les cas biensure dans ma requettes etr javoue que je voye pas bien comment je peux faire sauf cas par cas mais je suis pas timbré pour faire sa ^^
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
28 juil. 2005 à 15:27
je précisé "zolt4n" en répondant à Lucio, et "lucio" en répondant/informant les lecteurs ;)

pour tes 16milliards de colonnes, t'as du bol de t'en apercevoir maintenant ;)
et pour ton explication en général..... bah c'est pas clair. pas assez pour moi en tout cas ;)
en l'attente
PCPT
0
cs_lucio57 Messages postés 146 Date d'inscription lundi 10 février 2003 Statut Membre Dernière intervention 25 juillet 2007 2
28 juil. 2005 à 15:40
Pareil pour moi j'ai pas tout compris ton histoire de colonne !
0
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
29 juil. 2005 à 08:42
imagine un formulaire avec 12 colones
par colone il y a 4 champs un peu bien tres bien expert
'niveau de connaissance) du genre

-Ecxel
_
|_|
_
|_|
_
|_|
_
|_| avec 4 case comme sa et tu doit en cocher une ,ben lors du'une recherche c'est le meme systemes je cherche qui est expert en excel bon en calcul ...
pour les 12 cas sachant qu'une collone n'est pas obligatoirement cocher
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
29 juil. 2005 à 11:43
plus t'expliques, moins j'comprend......
pense qu'on est pas trop dans ta tête
là pour moi, çà veux dire que tu recherches un utilisateur MicrosoftExcel qui est mathématicien, et qui .....

nan, je m'égare. çà veut rien dire de plus qu'avant.
mais bon, tu vas sans doute te re-valider toi-même en disant "c'est bon, j'ai trouvé, il suffisait de fermer le projet, sélectionner le dossier, Shift+Suppr / OK, et ne plus y penser" .....
++

PCPT
0
zolt4n Messages postés 35 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 4 août 2005
29 juil. 2005 à 21:15
t'as compris j'ai reusit avec une requete sql like ?4?.....

merchi pour votre aide et de vus creuzé les menache pour les newb comme
sa ( promis c meme pas ironique )si jai trouvé c grace au 1er messages
mouah je vous aime , bon now je valide mon message ou pas ???



allé non juste javais validé mon message pour que personne dautre ce
plonge sur le probleme en voyant que le problem été resolu sa sert a sa
la validation ^^



mais bon pour le plaisir et pour embété pcpt hihi je v revalidé celui ci
0
Rejoignez-nous