Jump to content
php.lv forumi

Iegūt konkrētus datus MYSQL


vienmer-iesacejs

Recommended Posts

Tātad man ir MYSQL tabula "fruits".

tablefruits.gif

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 by vienmer-iesacejs
Link to comment
Share on other sites

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 by codez
Link to comment
Share on other sites

  • 2 years later...

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;
Link to comment
Share on other sites

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 by codez
Link to comment
Share on other sites

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 by jurchiks
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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ņš?
Link to comment
Share on other sites

@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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...