[SQL] % ne fonctionne pas !?

Résolu/Fermé
Riwalenn - 6 sept. 2005 à 11:39
Kisse
Messages postés
1
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
31 mai 2007
- 31 mai 2007 à 17:06
Bonjour,

dans ma table, j'ai fait la requête suivante :

SELECT*
FROM Products
WHERE ProductName IN ('%NV')

j'obtiens juste une ligne vide. Hors si je fais :
SELECT*
FROM Products
WHERE MainGrade IN ('NV')

J'obtiens tout mes produits référencés en NV dans la colonne MainGrade.

Hors moi ce que j'aimerais obtenir c'est les produits dont le nom se termine par NV ou -NV dans la colonne ProductName.
Pourquoi est-ce que mon %NV est refusé ?

merci pour votre aide

10 réponses

deus
Messages postés
93
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
24 mai 2007
90
6 sept. 2005 à 12:15
salut
essaie
SELECT*
FROM Products
WHERE MainGrade LIKE '%NV'
0
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
6 sept. 2005 à 14:23
bien joué Deus ! Merci pour la solution, j'avais pas pensé à LIKE et surtout à ne pas mettre de parenthèse après LIKE... merci encore !
0
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
6 sept. 2005 à 17:12
/par contre j'ai une autre question, ça ne fonctionne pas dans le cadre d'une colonne de date. J'ai une colonne qui s'appelle ModifyDate notée : 06/09/2005 16:41: par exemple

comment puis-je faire par exemple pour selectionner tous les champs dont la date correspond à aujourd'hui ?
j'ai essayé avec
SELECT *
FROM nom de la table
WHERE ModifyDate LIKE '06/09/2005%'

ou encore
WHERE ModifyDate IN '06/09/2005%'

ou encore avec les parenthèses avant et après les '

Est-ce que c'est une requête différente pour les dates ?
0
deus
Messages postés
93
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
24 mai 2007
90
6 sept. 2005 à 17:33
Re,
Voici une solution envisageable. Pour l’exemple j’ai utilisé la DB Northwind
USE Northwind
SELECT * FROm Orders
WHERE Datediff(dd, OrderDate, '07/08/1996') = 0

Mais tu peux aussi regarder la fonction DATEPART,…
0

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

Posez votre question
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
7 sept. 2005 à 10:55
oulà ! J'avoue que là tu parles un language que je ne comprends plus... je suis une newbie en SQL moi :)

Ma table s'appelle DeliveryDtls.
la colonne que j'aimerais avoir dans le WHERE c'est ModifyDate et la date 06/09/2005 par exemple. Par contre dans ma colonne ModifyDate, cela se présente sous la forme 06/09/2005:14:15: par exemple et moi j'aimerais sélectionner toute la journée.

J'ai réussi à m'en tirer grâce à une autre colonne mais dans un futur très proche je vais me retrouver vite dans la mouise ;) et donc il faudrait vraiment que je comprenne comment on fait...

ps. j'ai acheté un bouquin que je devrais reçevoir incessament sous peu : celui qui est présenté dans le menu de gauche...
0
random
Messages postés
1612
Date d'inscription
vendredi 26 novembre 2004
Statut
Membre
Dernière intervention
30 mars 2006
155
7 sept. 2005 à 11:17
format(modifydate;"jjmmaaaa")=format(date;"jjmmaaaa")
ou ent(modifydate)=date
ou modifydate>=date and modifydate<date+1
j'en connais d'autres plus longues
0
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
7 sept. 2005 à 11:38
modifydate>=date : pas de tri
modifydate>=date and modifydate<date+1 : ligne vierge
ent(modifydate)=date : erreur suivante

[MICROSOFT][ODBC SQL Server Driver][SQL Server] 'modifydate' is not a recognized OPTIMIZER LOCK HINTS option


il va de soi que j'ai bien mis les majuscules là où il y en avait.
0
deus
Messages postés
93
Date d'inscription
mercredi 20 novembre 2002
Statut
Membre
Dernière intervention
24 mai 2007
90
7 sept. 2005 à 13:35
Alors dans ton cas précis essaies ça :

SELECT * FROm DeliveryDtls
WHERE Datediff(dd, ModifyDate, '06/09/2005’) = 0

(Attention en fonction de ta configuration il se peut qu’il interprète ‘06/09/2005’ comme le 9 juin donc à toi de jouer avec ça ;)

0
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007

27 mars 2007 à 10:44
Bonjour ! T'as l'air de maîtriser la fonction LIKE alors une petite question pour toi, cadeau ^^

Je fais des requêtes en SQL sous ACCESS. Mon problème est à peu près le même qu'au dessus : j'ai deux tables A et B qui contiennent des objets dont l'arborescence est définie selon leur code ARBO.
A contient les matériels
B contient les pièces qui constituent les matériels

Je veux afficher les éléments de A qui ont des pièces dans B
exemple : dans A un matériel a un ARBO = 10
dans B toutes les pièces qui commencent par '10' constituent ce matériel (= 100 / 101 / 1000 / 100025 / etc...)

J'ai donc voulu faire une jointure de table du type
SELECT matériel, A.ARBO FROM A, B
WHERE B.ARBO LIKE 'A.ARBO%'

Erreur au niveau de la clause 'A.ARBO%'... j'ai essayé de remplacer "%" par "*", de placer des parenthèses ou des crochets... j'ai pas dû tout tester !?

Merci de me prévenir si tu as une petite idée ;)
0
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101 > kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007

27 mars 2007 à 11:19
t'aurais pas oublié un A.arbo=B.arbo ? enfin dans ce style.... il faut démontrer dans ta requete que arbo (par exemple) existe dans la table A et dans la table B... non ?! Sinon comment pourrait-il faire le lien entre la table A et la B ?
0
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007
> Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015

27 mars 2007 à 11:36
C'est là tout le pb en fait :
Table A :
ARBO / Libellé matériel
10 Chaise
20 Canape
30 Voiture
311 Scooter

Table B :
ARBO / Libellé piece
102 Vis
103 Planche
200 Coussin
2001 Plume
300 Roue
3001 Jante
3002 Pneu
3110 Guidon

Voilà l'idée... lier ces tables en fonction des champs d'ARBO, c'est le seul moyen que j'ai trouvé (les tables sont ici simplifiées pour la compréhension).
Le soucis c'est que les ARBO ne sont pas identiques MAIS un code ARBO de B contient forcément dans ses premiers chiffres un code ARBO complet de A

J'espère que c'est assez clair.. ? Le principal soucis se situe bien au niveau de la jointure
0
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101 > kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007

27 mars 2007 à 11:51
je pense avoir compris... en gros c'est un truc comme ça que tu veux :

select materiel.tableA,arbo.tableA,
from tableA, tableB
where arbo.tableA like arbo.tableB and arbo.tableA like '3%'
order by arbo.tableA

le seul hic serait en fait de definir le 30% ou un autre chiffre bien entendu...
seulement y'a juste un problème dans notre exemple tu as 2 références commençant par 30 -> voiture et scooter... mais je ne pense pas que le soucis vienne de là...
0
kiwijinshi
Messages postés
12
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
30 juillet 2007
> Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015

27 mars 2007 à 13:17
La synthaxe exacte est TABLE.CHAMP ;)
Et je pense qu'il sera plus simple de faire les conditions de jointures en VBA que directement sous SQL... tant que je n'ai pas de champ rigoureusement commun entre les deux tables (avec longueur de ARBO variable qui plus est) il n'y a pas de solution adaptée..

Pour scooter j'ai corrigé, c'était une erreur de mettre 301, j'ai remplacé par 311 pour l'exemple.

Merci pour ton aide en tt cas ! Joyeuse semaine
0
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
7 sept. 2005 à 14:16
Grandiose Deus ! l'histoire du mois de juin m'a fait tilt et en effet tu as raison. c'est vraiment très bizarre tu dois faire une recherche style 09/07 pour obtenir la date 07/09 quoi que j'ai oublié que j'ai la version anglaise de windows 2000 donc forcement ça coulait de source...

Merci Deus encore pour ton aide ! Ca m'enlève une épine du pied
0
Kisse
Messages postés
1
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
31 mai 2007

31 mai 2007 à 17:06
Franchement je comprend absolument rien a SQL
est-ce que l'on peut m'espliquer svp
0