Intersection entre 2 intervalles d'entier

Fermé
Yoyo - 9 août 2013 à 10:49
 Yoyo - 9 août 2013 à 18:38
Bonjour,

J'ai une base de données qui répertorie des biens immo.
Le bien a une superficie définie, exemple 500m²
Et une valeur de divisibilité, exemple divisible à partir de 50m²

J'ai un moteur de recherche, qui cherche par intervalle de superficie:
entre 0 - 100m²
entre 100 - 300m²
entre 300 - 600m²
entre 600 - 1000m²

Mon bien doit donc apparaitre pour les intervalles 0-100, 100-300 et 300-600

Comment je dois faire ma requête SQL ?
Actuellement je n'arrive pas à l'afficher pour toutes les intervalles auxquels il appartient.

Merci d'avance
A voir également:

2 réponses

termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
9 août 2013 à 10:54
Bonjour,

Exemble :

SELECT nomdebien
FROM tablebien
WHERE m² > 0
AND m² < 100 ;
0
Merci, mais c'est pas aussi simple que ça....
Comment je fais avec une intervalle 50-500 ?
0
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
9 août 2013 à 11:11
Exemble :

SELECT nomdebien
FROM tablebien
WHERE m² > 50
AND m² < 500 ;

Ce que je te propose n'est qu'un exemple vue que je ne connais pas tes tables et les champs qui s'y trouvent.
0
ta requête ne marche pas si je prend l'intervalle 0-100

Voici ce que j'avais fait et qui ne fonctionne pas non plus car cela ne rentre pas dans le cas 2 :

space = la superficie totale du bien (exemple 500)
rooms = la divisibilité du bien (exemple divisible à partir de 50)

case 1: $parts[] = "(space>'0' AND space<='100') OR (rooms>'0' AND rooms<='100')"; break;
case 2: $parts[] = "(space>='100' AND space<='300') OR (rooms>='100' AND rooms<='300')"; break;
case 3: $parts[] = "(space>='300' AND space<='600') OR (rooms>='300' AND rooms<='600')"; break;
case 4: $parts[] = "(space>='600' AND space<='1000') OR (rooms>='600' AND rooms<='1000')"; break;
case 5: $parts[] = "(space>='1000' AND space<='2000') OR (rooms>='1000' AND rooms<='2000')"; break;
case 6: $parts[] = "space>'2000' OR rooms>'2000'"; break;
0
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
9 août 2013 à 13:34
Ceci n'est pas du SQL mais du PHP :D
0
Arf... tu m'aides pas là!
Je sais que c'est du PHP, c'est pas ça le problème, c'est le WHERE de la requête SQL..

Pour te traduire, si je fais une recherche de biens pour une superficie de 100 à 300 m², on est dans le cas 2 qui dit d'utiliser le WHERE de la requête suivant :
(space>='100' AND space<='300') OR (rooms>='100' AND rooms<='300')
0
Bon j'ai une solution qui a l'air de fonctionner :

cas 1: (rooms <= 100 AND 100 <= space) OR (space >= 0 AND space <= 100)
cas 2: (rooms <= 300 AND 300 <= space) OR (space >= 100 AND space <= 300)
cas 3: (rooms <= 600 AND 600 <= space) OR (space >= 300 AND space <= 600)
cas 4: (rooms <= 1000 AND 1000 <= space) OR (space >= 600 AND space <= 1000)
cas 5: (rooms <= 2000 AND 2000 <= space) OR (space >= 1000 AND space <= 2000)
cas 6: space>'2000' OR rooms>'2000'
0