Hogyan tudom megoldani ezt az SQL JOIN problémát?
Az a lényeg, hogy vannak fent áruk egy táblában, és az ahhoz tartozó képek egy másik táblában. A képek connect_id-ja megegyezik a megfelelő áru id-jával. Nyilván utóbbi auto incrementes integer érték.
Az a lényeg, hogy amikor listába kiírom az adatokat egy while ciklussal, úgy kéne joinolnom, hogy a termék adatai csak egyszer íródjanak ki, utána közben a többi iterációval pedig az összes kép.
Tehát mondjuk ár, méret, leírás egyszer, aztán nyolc kép
aztán
ár méret leírás, aztán hét kép (nyilván amennyi tartozik a termékhez.)
Eddig erre jutottam:
"SELECT DISTINCT images.link AS imagelink, properties.* FROM properties INNER JOIN images ON images.connect_id = properties.id"
Lefut maga a kód, de így annyiszor írja ki az egyedi termékekhez tartozó adatot, ahány darab kép tartozik a termékhez, tehát a DISTINCT nem segít a dolgon.
A link a kép, megvan az oka, hogy nem image vagy picture lett a neve, de ez tökmindegy.
Valami tipp?
A bemásolt kód nem ír ki sehova semmit, ez egy SQL lekérdezés, az pedig teljesen természetes, hogy ha az egyik táblában n-szer szerepel az érték, akkor az összekötött lekérdezésben is n-szer fog (a DISTINCT meg az azonos sorokat szűri, hogy minden sor egyedi legyen, egyáltalán nem ide való).
Ha nem így lenne, akkor nem tudnál kirakni az összes képet.
Ami nálad hibás az a lekérdezés feldolgozása.
Vagy külön kérdezd le a képeket, vagy okosabban dolgozd fel a lekérdezés eredményét.
Ez most komoly? "Az a lényeg, hogy amikor listába kiírom az adatokat egy while ciklussal,"
A direkt félreértés itt kötelező?
"a DISTINCT meg az azonos sorokat szűri, hogy minden sor egyedi legyen, egyáltalán nem ide való"
Hát nekem éppen az azonos értékeket kell kiszűrnöm a properties adatai közül.
Ennyi erővel válaszolhattál volna a kérdésre. :)
Legalább a pofád ne lenne ekkora, ha már ennyire ostoba vagy.
"Az a lényeg, hogy amikor listába kiírom az adatokat egy while ciklussal,"
Leírom még egyszer, lassabban, mert látom nehéz a felfogásod.
Amit te szeretnél, olyan NINCS.
A JOIN összekapcsolja a két táblát és annyiszor fognak ismétlődni a sorok, ahányszor össze tudja kapcsolni a két táblát az adott értékeken.
A DISTINCT pedig (még egyszer) az azonos sorokat szűri ki.
Nem a hasonlókat. Nem a 99%-ban egyezőket. Az azonosokat. Ha két sorban KÜLÖNBÖZŐ a kép, akkor az a két sor NEM LESZ AZONOS.
Mint írtam, két lehetőséged van.
Vagy nem agyatlanul dolgozod fel az eredményt, ahogy a titokzatos kódod most csinálja, hanem figyelmen kívül hagyod az azonos értékeket és a különböző értékekre koncentrálsz, vagy külön kérdezed le a képeket, hiszen az egy más dimenzió (sok az egyhez) a tulajdonságokhoz képest.
"Legalább a pofád ne lenne ekkora, ha már ennyire ostoba vagy.
"
Amúgy te értelmes felnőtt embernek érzed magad ilyen stílussal? Mit vársz tulajdonképpen attól, hogy engem sértegetsz névtelenül egy fórumon?
Pedig úgy látszik még így is magas amit írok.
De legalább megpróbáltam.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!