vienmer-iesacejs Posted October 4, 2011 Report Share Posted October 4, 2011 (edited) Tātad man ir MYSQL tabula "fruits". Vajadzētu dabūt ārā piemēram "fails-4" no visiem MYSQL ierakstiem. Piem. uzspiežot uz linka "Fails 4", tiek saņemti attiecīgie dati: <a href="links4.php">Fails 4</a> Parādās - Orange Apple Pear uzspiežot uz linka <a href="links1.php">Fails 1</a> Parādās - Orange Banana Nevaru izdomāt kā to dabūt gatavu. Varbūt ir kādas idejas? Ko izmantot un kā? Varbūt var kāds kādu paraugu iedot, vai vismaz kā atrast googlē? Edited October 4, 2011 by vienmer-iesacejs Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted October 4, 2011 Report Share Posted October 4, 2011 SELECT nosukums FROM tabulis WHERE faili LIKE %meklejamais_vards% Ka strādāt ar $_POST / $_GET mainīgajiem un r pašu SQL nerakstīšu, jo to nāksies vien pašam sameklēt... Quote Link to comment Share on other sites More sharing options...
vienmer-iesacejs Posted October 4, 2011 Author Report Share Posted October 4, 2011 Paldies! Quote Link to comment Share on other sites More sharing options...
mixis Posted October 5, 2011 Report Share Posted October 5, 2011 Pareizāk jau būtu izveidot divas tabulas, lai tabulu datu atbilstu 3NF Quote Link to comment Share on other sites More sharing options...
codez Posted October 5, 2011 Report Share Posted October 5, 2011 (edited) Man šķiet, ka 3 tabulas: fruits: id, name files: id, name fruits_files: fruit_id,file_id un tad iegūt visus viena faila fruits: SELECT * FROM fruits_files ff LEFT JOIN fruits f ON ff.fruit_id=f.id WHERE ff.file_id=4 Edited October 5, 2011 by codez Quote Link to comment Share on other sites More sharing options...
CrossUp Posted April 24, 2014 Report Share Posted April 24, 2014 Man šķiet, ka 3 tabulas: fruits: id, name files: id, name fruits_files: fruit_id,file_id un tad iegūt visus viena faila fruits: SELECT * FROM fruits_files ff LEFT JOIN fruits f ON ff.fruit_id=f.id WHERE ff.file_id=4 Pietiek ar 2 tabulām. Pie tam 'SELECT *' ir ļoti slikta prakse, ja ir tiešām vajadzīgi visi dati no tabulas ir labāk nebūt slinkam un uzskaitīt katru tabulu. 1. tabula 'fruit' : lauki: id, nosaukums 2. tabula 'faili' : lauki: id, nosaukums, fruit_id Šis variants strādās, ja ir nepieciešams entītiju attiecība 1 pret daudziem (tā vismaz tika formulēta problēma). Šādā veidā iegūsi 3nf, ērtu apsekošanu. Kā es rakstītu no abām tabulām: $fails = meklētā_vērtība; $mysqli = 'SELECT f.nosaukums FROM fruit AS f RIGHTJOIN faili AS fl ON f.id = fl.fruit_id HAVING fl.fruit_id = ' . $fails; Quote Link to comment Share on other sites More sharing options...
codez Posted April 24, 2014 Report Share Posted April 24, 2014 (edited) Kāpēc celts augšā aizvēsturiskus topikus un vēl ieteikt pilnīgi bezsakarīgas lietas? Ko tu darīsi, ja pie failu tabulas, katram failam gribēsi izmēru glabāt? Glabāsi N-tās reizes priekš katra fruit_id, kurš šo failu izmanto? Vai, piemēram, gribēsi nomainīt faila nosaukumu? Mainīsi visos ierakstos ar dažādiem fruit_id? P.S. Šeit acīmredzami nav viens pret daudziem, bet daudzi pret daudziem, jo vienam auglim var būt daudz faili un vienam failam var būt daudz augļi. Edited April 24, 2014 by codez Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 24, 2014 Report Share Posted April 24, 2014 Also, SELECT * nav tik slikta prakse kā premature optimization. Quote Link to comment Share on other sites More sharing options...
jurchiks Posted April 24, 2014 Report Share Posted April 24, 2014 (edited) Nezinu gan. Ja tu maini tabulas struktūru, drop/rename columns, tad gadījumā, ja esi norādījis kodā specifiskas kolonnas, tu uzreiz uzzināsi, ka kaut kas ir nobrucis, jo kverijs nofeilos, bet ja tu selekto *, tad problēma ir, iespējams, daudz grūtāk atrodama. Edited April 24, 2014 by jurchiks Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 24, 2014 Report Share Posted April 24, 2014 Tu uzzināsi tajā pašā requestā, kad kkas nobruks. Vai nu nobruks, jo būs SQL error, vai nu nobruks, jo būs key, property etc. errors. Starpcitu, vai kāds mūsdienās arī nopietni raksta raw SQL? Quote Link to comment Share on other sites More sharing options...
gurkjis Posted April 24, 2014 Report Share Posted April 24, 2014 Domāju,ka problēma ir dēļ veciem PHP MySQL tutoriāļiem, kas jauniņos novirza no efektīvākas programmēšanas ceļa. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted April 24, 2014 Report Share Posted April 24, 2014 Nezinu gan. Ja tu maini tabulas struktūru, drop/rename columns, tad gadījumā, ja esi norādījis kodā specifiskas kolonnas, tu uzreiz uzzināsi, ka kaut kas ir nobrucis, jo kverijs nofeilos, bet ja tu selekto *, tad problēma ir, iespējams, daudz grūtāk atrodama.Kam mums spaisiņš, ja ir "Moment" un maisiņš? Quote Link to comment Share on other sites More sharing options...
codez Posted April 24, 2014 Report Share Posted April 24, 2014 Moderni jau skaitās modeļus definēt kodā un no tiem mainīt tabulas struktūru automātiski, nevis otrādi. Un tad jau IDE parādīs, kuri modeļa parametri ir lieki. Quote Link to comment Share on other sites More sharing options...
jurchiks Posted April 24, 2014 Report Share Posted April 24, 2014 @codez - man patīk precīzi kontrolēt datubāzes struktūru, nevis uzticēt to kaut kādam 3rd party tūlim. @daGrevis - to, ka kaut kas ir nogājis greizi, jā, bet kas precīzi un kur? Raw SQL raksta gan. Es gan esmu sev uztaisījis query builderi, kas der ~70% gadījumu, bet tas fonā tāpat uztaisa SQL kveriju, un ja gadās kāda piņķerīgāka lieta, piemēram, ORDER BY ar IFu tajā, tad bez raw SQL neiztikt. @Kavacky - sorry, what? Quote Link to comment Share on other sites More sharing options...
codez Posted April 24, 2014 Report Share Posted April 24, 2014 1)mysql arī ir 3rd party tūlis 2)ar modeļiem var kontrolēt db struktūru daudz labāk, jo tev nepieciešamas mazāk zināšanas. 3)Un ne tikai kontrolēt, bet arī paplašināt, piemēram, glabāt laukos masīvus, json objektus, un vēl citus tipus, kuriem precīzi pielāgota serializācija un dabīgais mysql lauka tips. 4)Ar modeļiem var nepārraktos aplikācija loģiku viegli realizēt modeļu līmeņa kešošanu. Pie tam advancētos ORM, tas jau ir iekša. 5)Paraksti programmēšana zemākā abstrakcijas līmenī ir neefektīvāka, jo prasa daudz dziļākas zināšanas, prasa ilgāku izstrādes laiku. Tas ir līdzīgi kā programmēt asamblerī vai Scalā. Protams, asamblerī ir daudz lielāka kontrole, bet ikdienišķās situācijas vienkāršu scala kodu nokonvertētu uz JVM bytcodu un tad ar JIT uz mašīnkodu, nepārspēsi rakstot asamblera programmu, jo visas tās optimizācijas, kuras ir ieliktas kompilatoros, vienkārši nespēsi pārspēt. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.