» »

pomoč pri poizvedbi MYSQL ..

pomoč pri poizvedbi MYSQL ..

nodrim ::

pozdravljeni!

Imam en problem, ki ga še nisem rešil.

V bazi imam določene podatke, ki bi jih rad preko obrazca sfiltriral, da mi pač prikaže tiste, ki najbolj ustrezajo izbranim pogojem.

Problem je naslednji:

- če v query dam med pogoje operator AND, mi bo prikazalo samo tiste vnose, ki imajo samo izbrane pogoje in ne vnosov, ki imajo poleg teh pogojev še kakšnega dodatnega ...
- če v query dam med pogoje operator OR, mi bo seveda prikazalo vse, ki imajo vsaj enega od izbranih pogojev ...

Primer: - dodatna oprema avtomobila je lahko: klima, radio, zatemnjena stekla, usnjeni sedeži, široke gume

če v obrazcu poklikam klima in radio, želim, da mi pokaže tudi tiste avtomobile, ki imajo poleg klime in radia tudi morebitno ostalo dodatno opremo ...

torej potrebujem query, ki bi mi prikazal vnose, ki VSAJ ustrezajo pogojem, lahko pa imajo še kaj več ... če bi bilo mogoče narediti rezultat poizvedbe, ki bi čedalje manj ustrezal pogojem pa še toliko bolje :)

torej najprej tisti, ki zadoščajo vsem pogojem, nato tisti, ki zadoščajo (vsem pogojem - 1) itd., ampak ta je že bonus :)

hvala vsem :)

nodrim ::

SELECT * FROM tabela WHERE pogoj1=izbira1 AND pogoj2=izbira2 (prikaže tiste, ki imajo izpolnjene točno in samo te pogoje)

SELECT * FROM tabela WHERE pogoj1=izbira1 OR pogoj2=izbira2 (prikaže tiste, ki imajo izpolnjen vsaj en pogoj)

rad pa bi prikazal tiste, ki imajo izpolnjene vsaj izbrane pogoje, lahko jih je pa še več ...

OwcA ::

Kako pa tabela zgleda? Če je normalizirana bi moral or zadoščati.
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()

nodrim ::

mmm . .. normalizirana? :8)

v primeru teh avtomobilov bi bila takšna

polja: ID, model, klima, radio, zatemnjena stekla, široke gume, usnjeni sedeži

in so pri opremi recimo ničle in enke glede na opremljenost

OwcA ::

Normalizacija.

Če so 0 in 1 lahko sešteješ in urediš po tem, malo grdo, ampak učinkovito.
Otroška radovednost - gonilo napredka.

DSmidgy ::

Uporabiš
SELECT
*,
sum (
CASE
when pogoj1=izbira1 then 1 else 0
END
+
CASE
when pogoj2=izbira2 then 1 else 0
END
+
..
) as Sort
FROM tabela
WHERE pogoj1=izbira1 OR pogoj2=izbira2
ORDER BY Sort desc

Nisem poizkusil .. mogoče dela.

Zgodovina sprememb…

  • spremenil: DSmidgy ()

Volk| ::

Jaz imam tudi en problem v mysql query
$seznam = mysql_query("SELECT * 
			FROM `ime`
			WHERE lastnik=$uporabnik
			ORDER BY $razvrsti 
			LIMIT $stevka,15")
			or die(mysql_error());


javi mi napako:
Unknown column 'user' in 'where clause'

če odtstranim "where" pol zadeva dela, toda ni tisti sql kaj jaz zelim
Baza je ok, če naredim poizvedovanje v myPhpAdmin pa dela ok.
Verjetno je kaka bedasta napaka, toda sem porabil ze 2 uri pa ne najdem.
help...
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.

Ziga Dolhar ::

Uf, kdo bo pa stringe ($uporabnik) spravil med narekovaje (=tvoj konkreten problem), in jih morda celo eskejpal?
https://dolhar.si/

Zgodovina sprememb…

Volk| ::

Sem imel ze v narekovajih(enojnih, dvojnih) pa ne gre.
'$uporabnik' dobim iz seje.
Je pol tudi obcutljivo na SQL Injection?
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.

Zgodovina sprememb…

  • spremenil: Volk| ()

Ziga Dolhar ::

$uporabnik daj med enojne narekovaje. Med dvojne ne bo šlo, saj si vanje zajel cel query.
https://dolhar.si/

Volk| ::

Hvala, Žiga, dela zdaj, nekaj druga sem se moral popravit.
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.

nodrim ::

pa bi povedal kaj si popravil?

Volk| ::

usera sem definiral na novo in dodal neke pravice.
pa seveda kot je omenil Žiga...narekovaje
_______________________________________________________
Izobražen je tisti človek, ki ve, kje bo našel tisto, česar ne ve.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

MySQL poizvedba iz dveh tabel

Oddelek: Programiranje
101472 (765) MrStein
»

MS Access (strani: 1 2 )

Oddelek: Programiranje
647062 (5120) travica
»

[SQL] časovno obdobje

Oddelek: Programiranje
71328 (1156) R33D3M33R
»

[mysql] malo bolj zahtevna poizvedba

Oddelek: Programiranje
161518 (1369) destiny
»

SQL ukaz za trenutni oz. določen datum?

Oddelek: Programiranje
51062 (969) erik

Več podobnih tem