ugrás a tartalomhoz

MySQL lekérdezés

toldigabor · 2013. Dec. 19. (Cs), 14.26
Van egy táblám:
mező_1mező_2mező_3
182056
182057
1911
1912
1913
1914
1915
1921
1922
1923
1924
1925
1931
1932
1933
1934
1935
1936
2011
2012
2013


Amire a következő lekérdezést írtam:

SELECT *
FROM tabla
	WHERE 
	(
		(((tabla.mezo_2)>=1) AND 
		((tabla.mezo_3)>=4)	AND
		((tabla.mezo_1)=19))
		AND
		(((tabla.mezo_2)<=3) AND
		((tabla.mezo_3)<=3)	AND
		((tabla.mezo_1)=19))
	)
Tehát a mező1 19-esén belül szeretném megkapni a mező2 1-es mező3 4-esétől a mező2 3-as mező3 3-asáig.
De nem igazán akarja a MySQL. Mi lehet a hiba?
 
1

Csak a megérzéseimre

H.Z. · 2013. Dec. 19. (Cs), 14.44
Csak a megérzéseimre hagyatkozva: talán a középső AND helyett OR kellene? (majd még gondolkodom rajta, ha felébredek :) )
(((tabla.mezo_2)>=1) AND
                ((tabla.mezo_3)>=4)     AND
                ((tabla.mezo_1)=19))
                AND
                (((tabla.mezo_2)<=3) AND
                ((tabla.mezo_3)<=3)     AND
                ((tabla.mezo_1)=19))

A két kiemelt feltétel sohasem teljesülhet egyszerre (szerintem)
2

Melyik az a szám, amire

BlaZe · 2013. Dec. 19. (Cs), 14.44
Melyik az a szám, amire teljesül, hogy >=4 AND <=3? :)
3

Azokat a sorokat szeretném

toldigabor · 2013. Dec. 19. (Cs), 15.19
Azokat a sorokat szeretném megkapni, amelyeknél a mező2-n belül a mező3-ra jönnek ki ezek az értékek.
4

Csak származtatott mezővel?

toldigabor · 2013. Dec. 19. (Cs), 15.21
Lehet, hogy ez csak származtatott mező segítségével lehet megoldani? A 3 mező egybevonásával?
7

mezo_1=19 and (mezo_2 >=1 and

H.Z. · 2013. Dec. 19. (Cs), 15.58
mezo_1=19 and (mezo_2 >=1 and mezo_2 <=3) and (mezo_3>=4 or mezo_3<=3)

Ez így nem jó?
(a mezo_2 körüli zárójelek csak az olvashatóság kedvéért, egyébként nem kellenek)
5

Talán a

Pepita · 2013. Dec. 19. (Cs), 15.23
4/0, vagy a 3/0? :)
6

Ezzel nem tudom mit akartál

toldigabor · 2013. Dec. 19. (Cs), 15.36
Ezzel nem tudom mit akartál mondani
10

Csak tréfa volt

Pepita · 2013. Dec. 19. (Cs), 20.47
ne vedd komolyan.
8

Ha jól értem, akkor mindegyik

Endyl · 2013. Dec. 19. (Cs), 16.43
Ha jól értem, akkor mindegyik visszaadott sorra igaz lesz, hogy mezo_1 = 19, ezért ezt kihoztam előre egy AND kapcsolattal. Ezen belül (zárójeles rész) kell az, amiben mezo_2 = 1 és mezo_3 >=4, vagy (ha jól értem a tól-ig-es megfogalmazást; ha nem, akkor ez a rész kihagyható) mezo_2 = 2, vagy mezo_2 = 3 és mezo_3 <= 3. Tehát:

mezo_1 = 19 AND
(
  (mezo_2 = 1 AND mezo_3 >=4) OR
  (mezo_2 = 2) OR
  (mezo_2 = 3 AND mezo_3 <= 3)
)
Tehát, ha nem jól értettem az intervallum megfogalmazását, és mezo_2 értékeiből csak az 1-es és a 3-as értékek kellenek, de a 2-esek nem, akkor a 4. sor kihagyható a feltételből.
11

Nagyon frankó

toldigabor · 2013. Dec. 19. (Cs), 23.18
Nagyon jó. Köszi szépen Endyl. Közbe még írtam egy ciklust, arra az esetre, ha a mezo_2 nem csak 3-ig megy, hanem mondjuk 1-5-ig: ilyenkor a "(mezo_2 = 2) OR" kifejezést többször kell ismételni, növekvő számmal.
Most még azon töröm a fejem, hogy hogyan lehet, ha a mezo_1 sem állandó, hanem az is egy intervallum. Például 18_20_57-20_1_2 (a fenti táblázat alapján).
12

Intervallum vagy számok?

Pepita · 2013. Dec. 20. (P), 17.39
18_20_57-20_1_2

Ezt konkrét számoknak vagy valóban intervallumnak (szélső értékek közti valamennyi lehetséges értékek) kell érteni? Valahogy nekem egyik sem jön össze...

De ha kicsit elgondolkodsz ezen a konkrét szám - intervallum kérdésen, akkor be fogod tudni helyettesíteni a WHERE feltételedbe jól. Sok sikert, remélem innen megoldod.
9

Használd az sql fiddle-t

rrd · 2013. Dec. 19. (Cs), 19.35
Használd az sql fiddle-t ilyen kérdéshez mert ott könnyebb játszani az adatokkal.