Kezdőoldal » Számítástechnika » Programozás » Erre mi lehet a jó megoldás...

Erre mi lehet a jó megoldás SQL-ben?

Figyelt kérdés

Egy webshop adatbázisában szerepel két tábla:

-termekek(id,nev,leiras)

-tulajdonsagok(termek_id,tulajdonsag)


Kereső mezőbe ha beír a felhasználó egy kifejezést, akkor dobja fel azokat a termékeket amik tartalmazzák az adott kifejezést bármelyik mezőben.

Én így csináltam: SELECT * FROM termekek INNER JOIN tulajdonsagok ON termekek.id = tulajdonsagok.termek_id WHERE termekek.nev = "kifejezés" OR termekek.leiras = "kifejezés" OR tulajdonsagok.tulajdonsag = "kifejezés"

Működik is, viszont ha az adott kifejezés szerepel a leírásban, akkor annyiszor felhozza rekordként az adott terméket ahány tulajdonság hozzá van rendelve a másik táblában.

Mi lehet erre a jó megoldás?



2023. jan. 23. 15:18
1 2
 11/12 anonim ***** válasza:
47%
Ahogy 8-as írta, az inverted index konkrétan erre van kitalálva és simán megvalósítható relációs adatbázisban.
2023. jan. 23. 19:16
Hasznos számodra ez a válasz?
 12/12 anonim ***** válasza:

Az általad leírt SQL lekérdezésben a probléma az, hogy az INNER JOIN miatt minden olyan tulajdonság rekordot is visszaad, ami egy adott termékhez tartozik. Ennek következtében ha egy terméknek több tulajdonsága is van, akkor az adatbázis többször is visszaadja azt a terméket.


A megoldás lehet, hogy a termékek táblát és a tulajdonságok táblát külön-külön kérdezd le, és utána az eredményeket egyesítsd.


SELECT * FROM termekek WHERE termekek.nev = "kifejezés" OR termekek.leiras = "kifejezés"

UNION

SELECT termekek.* FROM termekek INNER JOIN tulajdonsagok ON termekek.id = tulajdonsagok.termek_id WHERE tulajdonsagok.tulajdonsag = "kifejezés"

2023. jan. 24. 22:00
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!