PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
kirjelduste leidmine tabelist nii, et ühtegi ei korduks
Postitaja: kirjeldaja 2013-04-05 09:06:32
andke nõu kuidas teha päring.
on olemas mysql tabel ja seal andmed toodete kohta, iga toote kohta on ka paar seletavat sõna (ilus, suur, lahe, midaiganes) alguses kuhugi tühikut ei ole pandud ja eraldatud on koma ja tühikuga, see on täpne ja seetõttu on lahti kiskuda ka lihtne. aga probleem on selles, et mõnel tootel on kirjelduse koha peal samad sõnad ka ja mul on vaja kätte saada kõikide toodete kirjeldustest kõik sõnad vaid korra.

sooviks veidi nõu, või oleks parem mõte baasid ümber korraldada?
RE: kirjelduste leidmine tabelist nii, et ühtegi ei korduks
Postitaja: agraegag4q gag 2013-04-05 09:33:53
Korralda baas ümber

Tabel 1: items (id, name, ...)
Tabel 2: item_to_description_relation (item_id, description_id)
Tabel 3: descriptions (id, name, ...)

Päring
SELECT d.name
FROM items i
JOIN item_to_description_relation ON r( i.id = r.item_id)
JOIN descriptions d ON (d.id = r.description_id)
WHERE i.xx = something
GROUP BY r.description_id
ORDER BY d.name

See sobib siis, kui andeid on mõistlikult. Kui jutt käib sadadest tuhandetest on paremat lahendust vaja ja asi läheb veidi keerulisemaks. (Üks variant on denormaliseerimine, teine variant on võtta kasutusel näiteks mongodb)

Kui where osa items tabelisse ei ole vaja, siis FROM peaks olema kohe relation tabelist.
RE: kirjelduste leidmine tabelist nii, et ühtegi ei korduks
Postitaja: blaa 2013-04-05 10:52:34
ei no tõesti, saab veel keerulisemalt

või lihtsamalt

CREATE TABLE toode (
id int(11) NOT NULL AUTO_INCREMENT,
nimi varchar(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE kirjeldus (
toode_id int(11) NOT NULL,
marksona varchar(255) NOT NULL,
UNIQUE KEY toode_id (toode_id,marksona)
);

select nimi, group_concat(marksona) from toode left join kirjeldus on toode.id = kirjeldus.toode_id

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0779950618744