Requette Access sur interval (metrique)

Fermé
Binabik - 28 janv. 2008 à 17:02
binabik Messages postés 3 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008 - 30 janv. 2008 à 17:51
Bonjour,

Voila je cherche a faire une requette sour Access, entre 2 tables contenant des intervals (metrique) differents.
Ex : bleu de 10m a 20m
Vert de 15m a 25m

Je cherche a avoir : 15m a 20m

[url=http://www.hebergementimages.com][img]http://www.hebergementimages.com/images/1201532074_requette.jpg[/img][/url]

La requette que j ai essayer d ecrire ne marche pas

Si quelqu un a une idee, je prend

11 réponses

En mode SQL (Dans la fenêtre de création de requete : Affichage -> mode SQL), ca donne :

SELECT COULEUR, BORNE_INF, BORNE_SUP, 'DE' + BORNE_INF + 'A' + BORNE_SUP AS INTERVALLE FROM MATABLE

après, je n'ai pas le détail de ce qu'il y a exactement dans les tables, donc je ne peux pas t'aider plus...
0
hum, merci de ta reponse, ce n'est pas exactement ce dont j'ai besoin, c est ma faute je me susi mal exprime.

Je vais essayer d etre plus precis.

J'ai 2 tables differentes avec 3 champs : NOM (ca c est la clef), FROM , TO
NOM (toujours la clef), FROM, TO

(NOM = string, FROM,TO = double )
Ce que je veux c est avoir le NOM et l'interval commun entre les different FROM TO.

Ex :

dans table 1 : NOM=BLEU FROM=10 TO=20
Dans table 2: NOM=BLEU FROM=15 TO=25

Je veux avoir comme resultats 15 et 20.

Dans table 1 : NOM=VERT FROM=150 TO=560
das table 2 : NOM=VERT FROM=100 TO=160

Je veux 150 et 160.



Le truc c est que j'ai dans les 500 NOM differents, et un nombre incalculable de FROM TO differents ( dans les 20 000 lingnes dans chaque table)

Avec des interval Qui se chevauche n importe comment (c'est a dire interval dans table 2 pas toujours compris dans table1, parfois plus grand, parfois inexistant, parfois chevauche dans limite sup, parfois dans limite inf...)


C'est pas un probleme simple, et je ne suis pas dutout specialiste en language.

J'espere que mes explication sont meilleure maintenant.

Je prend toujours tout les conseil :P

merci
0
@¿@ Messages postés 48 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 23 mai 2009 6
28 janv. 2008 à 18:53
SELECT table1.nom, table1.from, table2.to
FROM table1 INNER JOIN table2 ON table1.nom = table2.nom;
a partir de la, tu peux fraire un traitement en VB ou entrer la difference en champ demandé
@+
0
merci mais...

On se rapproche.

Il me donne certain resultat juste mais d autre faux :(

Il me donne :

NOM FROM TO
Bleu 57.00
Rouge 45.87 46.94
Vert 34.62 35.97
Jaune 22.95 69.19
Jaune 66.09 69.19
Gris 11.89
Gris 51.38


Les donnees de la table1 sont :

Bleu 57.00 79.23
Rouge 45.87 51.19
Vert 34.62 41.05
Jaune 66.09 69.19
Jaune 22.95 41.76
Gris 11.89 20.28
Gris 51.38 51.82


Les donnes de la table 2 sont :

Rouge 45.87 46.94
Vert 34.63 35.97
Jaune 66.45 75.19
(donc pas de Bleu et pas de Gris)

Le resultat attendu serrait:

Rouge 45.87 46.94
Vert 34.63 35.97
Jaune 66.45 69.19


J'espere que vous avez des idees...

(Je suis desole ca a vraiment l'air d un exercice d'ecole :( )


Merci encore
0

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

Posez votre question
@¿@ Messages postés 48 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 23 mai 2009 6
28 janv. 2008 à 20:12
je vois un peu plus ce que tu desires mais ..... y a 2 jaune sur ta table 1, c est normal? si oui, comment veux tu le traiter?
table 1
Jaune 66.09 69.19
Jaune 22.95 41.76

table 2
Jaune 66.45 75.19

attendu
Jaune 66.45 69.19

tu veux le minimum de la table 2 et le max de la table 1?
ou le mini table 2 et max table 1 ou 2 (choix du + gros)?

apres, le reste sera + facile quand j aurai compris

@+
0
lol... Si c est facile une fois que tu auras compris je vais travailler a te faire comprendre alors :P

L'idee c est ca, je veux le Max des FROM (peut importe la table) et le min des TO (peut importe la table encore une fois) Mais uniquement pour les intervals commun.
Donc parfois le from serra dans la table 1 parfois la table 2
Parfois le TO serra de la table 1 parfois de la table 2 (mais sans relation obligatoire avec l'origine du FROM)

Pis si ya pas d interval commun, ben je veux rien avoir :P

Tu pense tenir le bon bout ? :P
0
Je me demande si je pourrais pas faire des boucle avec des IF ? j'ai souvenir de quelques trucs que j ai vaguement ecouter quand j etais a la fac sur les boucles :S Je sais pas si Acces accepte ce genre de chose ?

Je pourrais peut etre ecrire un truc du genre :

Select [table1.]NOM , [table1].from, [table1].to
IF [table1].from,to contains [table2].from then keep [table2].from
esleif
[table1].from,to contains [table2].to then keep [table2].to
else
End;

C'est de la science fiction ce que j'ecris ? j'ai l impression qu il me manque des esleIf pour les cas ou le FROM et TO de la table2 est a "l'exterieur de la table1" c'est une ebauche de toute facon :P

J'etais en geol pas en info :P

Encore merci :P
0
binabik Messages postés 3 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008
28 janv. 2008 à 22:42
Select [table1.]NOM , [table1].from, [table1].to
IF [table1].from,to contains [table2].from then keep [table2].from
esleif
[table1].from,to contains [table2].to then keep [table2].to
esleif
IF [table2].from,to contains [table1].from then keep [table1].from
elseif
[table2].from,to contains [table1].to then keep [table1].to
End;


Ca ca serrait plus juste peut etre...

Je prend toujorus tout les conseils :P

merci
0
@¿@ Messages postés 48 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 23 mai 2009 6
28 janv. 2008 à 23:26
je ferai un truc en VBA style

set dbs=currentdb
mysql="SELECT Table1.nom, Table1.from AS t1f, Table1.to AS t1t, Table2.from AS t2f, Table2.to AS t2t " & _
"FROM Table1 INNER JOIN Table2 ON Table1.nom = Table2.nom;"
set rst = dbs.openrecordset(mysql)
do while not rst.eof

et je traiterai la requete. le seul defaut c est que cette syntaxe ne fonctionne plus on dirait avec access 2003.
je galere un peu pour retrouver la syntaxe de lecture sequentielle.
je continue a fouiner :o))
@+
0
binabik Messages postés 3 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008
29 janv. 2008 à 14:49
Du VBA :S

Ya un editeur VBA dans Access ?

Pour reprendre mes explication sur ce que je voudrais obtenir, c'est un inventaire. La table 1 correspond a ce que tu sais (vieux fichier de donnee), la table 2 a ce que tu as retrouve (physiquement). Ce que tu sais n'est pas forcement forcement retrouve, et ce que tu as retrouve tu ne le savais pas forcement. Moi ce que je veux, c est ce que je sais ET que j'ai retrouve.

Merci encore pour ton obstination a me venir en aide :)
0
binabik Messages postés 3 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008
30 janv. 2008 à 17:51
Bon je sais pas si ca interressera quelqu un, un jour...

Mais bon. Une solution serait :

https://www.clubic.com/forum/t/requette-acces-sur-interval/181808

SELECT table1.[NOM],table1.FROM, table2.FROM, table1.TO, table2.TO,
IIf([table1].[FROM]<[table2].[FROM],[table2].[from],[table1].[FROM]) AS IntervalleMin,
IIf([table1].[TO]>[table2].[TO],[table2].[TO],[table1].[TO]) AS IntervalleMax
FROM Dispo INNER JOIN table2 ON Dispo.[NOM] = table2.[NOM];

Merci a " gcc " qui a trouve une solution et merci " @¿@ " d'avoir essaye ;)

a plus
0