Recherche dans une table

mladenski Messages postés 12 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 24 avril 2009 - 7 mars 2009 à 16:13
SElKettani Messages postés 36 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 26 février 2010 - 22 nov. 2009 à 16:54
Bonjour. J'ai le problème suivant:

J'ai deux tables. La première a bcp de champs (c'est une liste d'expéditions) dont un qui m'intéresse, LE POIDS. La deuxième table contient un barême tarifaire suivant le poids de l'expédition et la zone d'expédition.
   -ex.première table:

<col style=\"width: 77pt;\" width=\"103\" /><col style=\"width: 58pt;\" width=\"77\" /><col style=\"width: 57pt;\" width=\"76\" />----
REFERENCE, COLIS, POIDS, ----
00426051, 1, 3.8, ----
00426114, 1, 10, ----
, 1, 310
   -ex.deuxième table:

<col style=\"width: 68pt;\" width=\"91\" /><col style=\"width: 40pt;\" width=\"53\" /><col style=\"width: 43pt;\" width=\"57\" />----
Weight, Zone 1, Zone 2, ----
5, 5.48, 7.32, ----
10, 6.72, 8.97, ----
20, 8.39, 11.22, ----
30, 10.25, 13.69, ----
40, 13.02, 17.41, ----
50, 14.79, 19.76, ----
60, 16.88, 22.55, ----
70, 18.88, 25.22, ----
80, 20.93, 27.96, ----
90, 23.00, 30.75, ----
100, 23.95, 31.97

En gros ce que je veux faire c'est d'abord de rechercher la bonne ligne dans la deuxième table. Pour indication, lorsque le poids de l'expédition est entre deux tranches de poids il faut choisir celle qui est supérieure (par exemple, si poids expédition = 35 kg, il faut lire la ligne qui contient 40 sous 'WEIGHT' de la table 2).

Une première étape peut être de construire la requête comme cela:
SELECT * FROM table1, table2
WHERE table1.POIDS <= table2.Weight;

Par contre, cela me donne tous les tuples entre table1 et table2 qui satisfont la condition. J'ai essayé avec DISTINCT, LIMIT, RAND...je ne peux pas obtenir ce que je veux. Est-ce que quelqu'un pourrait-il m'aider? Merci d'avance et bon week-end

3 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
24 mars 2009 à 11:49
Bonjour

pour trouver la ligne qui correspond :

SELECT *
FROM Table1 AS Colis, Table2
WHERE Table2.Weight = (SELECT MIN(Weight) FROM Table2 WHERE Weight >= Colis.Poids)

ca va te revoyer pour chaque colis, la tarification qui va bien
0
mladenski Messages postés 12 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 24 avril 2009
15 avril 2009 à 17:20
Désolé pour la réponse tardive. J'avais envisagé une autre solution en créant plusieurs tables et ça marchait aussi mais effectivement c'est beaucoup plus intelligent comme ça.

En tout cas merci.
0
SElKettani Messages postés 36 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 26 février 2010
22 nov. 2009 à 16:54
Bonjour,
J’ai un problème similaire, je n’ai pas su appliquer votre code. J’ai une table qui comporte 15 lignes (Ages) et 6 colonnes (Taille). Je voudrais en introduisant dans 2 zones texte un age et une taille que le chiffre contenu dans la table soit affiché dans une troisième zone texte ! Où dois je mettre Select!
Une partie de la table :
1m60 1m67 1m75
15 ans 530 540 550
20 ans 560 580 590
25 ans 590 600 615
Merci pour votre aide !
0
Rejoignez-nous