Pentiums Posted March 2, 2008 Report Share Posted March 2, 2008 Nu tad tā, ienāca prātā lieliska doma, daudzos portālos ir skatīšanās pēc tagiem un citas tagu lietas!! piemŗam tu paņem lasīt rakstu un malā parādās "Līdzīgie raksti" kurus paņem pēc lasāmā raksta tagiem! 1) Man iešāvās prātā 2 veidi: 1] id | virsraksts | raksts | tags1 | tags2 | tags3 | tags4 | 1 | Zagšana | blaa | noziegums | zaglis | menti | bandīti| -------------------------------------------------------------------------- 2] id | virsraksts | raksts | tagi | 1 | Zagšana | blaa | noziegums, zaglis, menti, bandīti | -------------------------------------------------------------------------- kurš no tiem ir labāks? un otrs jautājums 2) Kā pēctam to realizēt, lai parāda piemēram 5 līdzīgos rakstus, nu kā vienkārši pēc WHERE izvilkt no db es zinu, nu iedomājaties paši šo lietu un sapratīsiet :) Varat parādīt dažus piemērus? Paldies jau iepriekš.. jo es nevaru īsti iebraukt šitajā tagu lietā Link to comment Share on other sites More sharing options...
Aleksejs Posted March 2, 2008 Report Share Posted March 2, 2008 Es taisītu ar trīs tabulām: Raksti id virsraksts raksts Tagi id tags TagRaksti id_tags id_raksts Link to comment Share on other sites More sharing options...
Pentiums Posted March 2, 2008 Author Report Share Posted March 2, 2008 Es taisītu ar trīs tabulām: Raksti id virsraksts raksts Tagi id tags TagRaksti id_tags id_raksts Man šķiet ka baigā ķēpa ar tiem tagiem... tajā Tagi id tags stāvēs tagi pēc id... nu labi un tajā TagRaksti id_tags id_raksts stāvēs raksta id un pretī viņam taga id.. kā ar izvadi tas viss izskatītos? Link to comment Share on other sites More sharing options...
Aleksejs Posted March 2, 2008 Report Share Posted March 2, 2008 Atlasīt visus rakstus, kam tags "kurkums" SELECT r.id AS id, r.virsraksts AS virsraksts FROM Raksti AS r, TagRaksti AS tr, Tagi AS t WHERE r.id = tr.id_raksts AND tr.id_tags = t.id AND t.tags = 'kurkums' Link to comment Share on other sites More sharing options...
Pentiums Posted March 2, 2008 Author Report Share Posted March 2, 2008 un ja vienam rakstam ir vairāki tagi, tad pēc 'kurkums' sekos: SELECT r.id AS id, r.virsraksts AS virsraksts FROM Raksti AS r, TagRaksti AS tr, Tagi AS t WHERE r.id = tr.id_raksts AND tr.id_tags = t.id AND t.tags = 'kurkums' OR t.tags = 'ļurkums' vai nepareizi? Link to comment Share on other sites More sharing options...
Aleksejs Posted March 2, 2008 Report Share Posted March 2, 2008 Ne īpaši pareizi, jo meklētājā jau nerakstīsi vairākus tagus? Bet ja rakstīsi, tad, jā, ja uzskati, ka jābūt kaut vienam no tagiem... Ja jābūt abiem tagiem, tad vajadzēs rakstīt AND t.tags='ļurkums'. Link to comment Share on other sites More sharing options...
Pentiums Posted March 2, 2008 Author Report Share Posted March 2, 2008 bet ja AND tad viņš parādīs rakstus kuriem ir obligāti abi šie tagi.. meklētājā es negribu rakstīt... redzkur dzīvs taustāms piemērs (žēl ka tikai no ārpuses taustāms) http://www.boot.lv/index.php?pg=202&news_id=5643 Rakstam labajā pusē ir "Raksti ar līdzīgu tēmu" Link to comment Share on other sites More sharing options...
Aleksejs Posted March 2, 2008 Report Share Posted March 2, 2008 Nu, tur jau var uzklikšķināt uz konkrētā viena taga, tādēļ nav jādomā ne par AND, ne par OR. Link to comment Share on other sites More sharing options...
Pentiums Posted March 2, 2008 Author Report Share Posted March 2, 2008 nu bet ja piemēram būs raksts par mūzikas tālruni un tad būs jāliek divi tagi "mobilie" un "atskaņotāji" Link to comment Share on other sites More sharing options...
Aleksejs Posted March 2, 2008 Report Share Posted March 2, 2008 Visi atvērtajam rakstam līdzīgie raksti: SELECT DISTINCT r.id AS id, r.virsraksts AS virsraksts FROM Raksti AS r, RakstTagi AS rt WHERE rt.id_tags IN (SELECT rt2.id_tags FROM rt2 AS RakstTagi WHERE rt2.id_raksts = '$atvērtā_raksta_id') Ai, nu taisi kā gribi. Es taisītu šādi. Link to comment Share on other sites More sharing options...
Pentiums Posted March 2, 2008 Author Report Share Posted March 2, 2008 rīts gudrāks par vakaru! :) ķeršos klāt rīt Link to comment Share on other sites More sharing options...
Paulinjsh Posted March 3, 2008 Report Share Posted March 3, 2008 #5 nepareizi atlasīs, nepieciešams rakstīt: SELECT ... FROM .. AND ( lauks = 'vertiba1' OR lauks = lauks2 = 'vertiba2') Link to comment Share on other sites More sharing options...
IM24LV Posted March 3, 2008 Report Share Posted March 3, 2008 Nū es taisu kā otro variantu :) tā ir vieglāk, pēc tam vienkārši atdali tos atslēgas vārdus un veic kādu vien apstrādi vēlies :) Link to comment Share on other sites More sharing options...
Gints Plivna Posted March 3, 2008 Report Share Posted March 3, 2008 Nū es taisu kā otro variantu :) tā ir vieglāk, pēc tam vienkārši atdali tos atslēgas vārdus un veic kādu vien apstrādi vēlies :) Taisi, taisi tikai padomā par tādām lietām, kā: 1) cik viegli Tev būs saskaitīt cik konkrētam tagam ir rakstu, 2) cik viegli Tev būs saskaitīt cik konkrētam rakstam ir tagu 3) cik viegli Tev būs vienu tagu mazliet updeitot, piemēram, nomainīt TAGS ar TEGS 4) Cik viegli Tev būs izkasīt ārā visus unikālos tagus 5) Cik viegli Tev būs nosakaidrot, kuri 3 (5, 10, N) tagi ir izmantoti visvairāk utml. DB projektēšanas kļūdas, kas ir ielaistas sākumā, ļoti dārgi maksā vēlāk :) Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
Grey_Wolf Posted March 3, 2008 Report Share Posted March 3, 2008 DB projektēšanas kļūdas, kas ir ielaistas sākumā, ļoti dārgi maksā vēlāk :) Vai ari vispar nepakljaujas labosanai.. -- taads mazinsh piemers par Db projektesanas kljudam: ir dots uzprojekte DB tabulu Skolenu atzimju saglabasanai .. Risinajums 1: id | skolnieka_id | Atzime | lauku tipi: id/ skolnieka_id-> Int (bigInt) UnSignetd (bez negativiem skaitljiem ) atzime --> TYNY INT UnSigned... --- Itkaa viss pilniibaa OK .. Bet rodas situacija (kad sistema jau Krietnu laiku nostradajusi.) Atnak Ministrijas rikojums ka kautkaadaa kontroldarba/ testa atzimes Buus no (-100 liidz 100 ) attieciigi vadot ieksa datus visi negativie skaitli buus 0 / vai posiztivi..... --- Un tagat izdomajiet kaa izlabot doto kljudu ja sistemai ir pieslegtas 10K skolas ..... un testu aizpildija kadi 500 skoleni... Vadot ieksa datus kljudu pamanija kadii 50% .... --- Kursh buus atbildigs par Atkartotu datu ievadisanu ? -------------------------- Risinajums 2: tas pats tikai atzimem atvelam lielaku vietu un Neliekam UnSigned.... --- tas taa.. Link to comment Share on other sites More sharing options...
Recommended Posts