Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  mysqli optimiseerimine märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
mine lehele eelmine  1, 2
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 24.10.2009 19:53:43 vasta tsitaadiga

koolitööga? mhh võimalik, inimene õpib kogu aeg elukoolis...

aga et siis pole võimalik võtta kokku delete from päringuid, kus on eraldi tabelid milles igas üks väli sama nime ja väärtusega? peab igast tabelist ikka eraldi kustutama?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mrkaarel
HV vaatleja

liitunud: 08.07.2008




sõnum 24.10.2009 22:23:32 vasta tsitaadiga

MySQL paistab, et lubab ka mitmest tabelist kustutamist. Ise pole kunagi kasutanud ja sinu näite puhul julgen küll arvata, et see optimeerimine sulle jõudluses erilist võitu ei anna, aga eks proovi järgi..
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 25.10.2009 14:47:12 vasta tsitaadiga

ma siin avastan vaikselt mysqli... sain sellise päringu kokku, mis ka töötab. kas selle DB_PAGES peab sinna lisama, kuna lihtsalt teistes tabelites ei pruugi väärtust olla? või saab ka ilma selleta?

$query = "
   select pg.page_name,
   case
      when hp.page_id is null then '0' else '1'
      end as hide_panel,
   case
      when hs.page_id is null then '0' else '1'
      end as hide_subject,
   case
      when dp.page_id is null then '0' else dp.destination_id
      end as destination_id,
   case
      when fp.page_id is null then '0' else '1'
      end as tofirst_page
   from %s as ps
      left join %s as hp on (ps.page_id = hp.page_id)
      left join %s as hs on (ps.page_id = hs.page_id)
      left join %s as dp on (ps.page_id = dp.page_id)
      left join %s as fp on (ps.page_id = fp.page_id)
      left join %s as pg on (ps.page_id = pg.page_id)
   where ps.page_id='%s'";

$result = $db->squery($query, DB_PAGES, DB_HIDE_MENUPANEL, DB_HIDE_SUBJECT, DB_DIRECT_PAGE, DB_DIRECT_TOFIRST_PAGE, DB_PAGE, $page_id) or sql_error(__FILE__, __LINE__);

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 25.10.2009 14:58:19 vasta tsitaadiga

krt, oleks ma ennem teadnud, et see joinimine nii kerge on. ma oleks ennem teinud selle ühe päringu asemel 5 icon_lol.gif icon_lol.gif icon_lol.gif icon_lol.gif
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
2korda2
HV kasutaja

liitunud: 19.07.2003




sõnum 27.10.2009 10:31:24 vasta tsitaadiga

keevitaja kirjutas:
krt, oleks ma ennem teadnud, et see joinimine nii kerge on. ma oleks ennem teinud selle ühe päringu asemel 5 icon_lol.gif icon_lol.gif icon_lol.gif icon_lol.gif

Nüüd mõistad ka minu üllatust, kui küsisid JOIN olemuse kohta. Muide, "lihtne" on siin suhteline - valesti joinides saab kenasid prohmakaid teha icon_razz1.gif Edu avastamisel thumbs_up.gif
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 27.10.2009 20:31:46 vasta tsitaadiga

nüüd jälle jännis. on kaks tabelit: imgs dirs

imgs:
img_id int
dir_id int

dirs:
dir_id int

kas saaks nüüd kõik dir_id välja võtta dirs tabelist ent lisada teave selle kohta, kas on see dir_id esindatud ka imgs tabelis. ehk siis midagi sellist:

array ('dir_id' => 7, 'in_imgs' => 0) kui ei ole, ja kui on, siis array ('dir_id' => 7, 'in_imgs' => 0)

on üldse ühe päringuga võimalik midagi sellist teha?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 27.10.2009 20:51:22 vasta tsitaadiga

Teed GROUP BY dir_id järgi ja kasutad COUNT() agregaatfunktsiooni.
Kas sa oled mõelnud mõne PHP ja MySQL algaja raamatu läbilugemise peale?

_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 27.10.2009 21:34:41 vasta tsitaadiga

ei ole. milleks siis HV on icon_lol.gif

aga nali naljaks. mis raamatut sa soovitaksid ja kust seda saaks?

troglodyte kirjutas:
Teed GROUP BY dir_id järgi ja kasutad COUNT() agregaatfunktsiooni.


aga kuidas see siis välja näeks?
ehk viitsid visndada midagi?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 27.10.2009 23:10:37 vasta tsitaadiga

Esimese asjana tulevad meelde O'Reilly LAMP raamatud, näiteks - http://www.amazon.com/Web-Database-Applications-PHP-MySQL/dp/0596000413 (ei ole ise lugenud).

Kui ma su probleemipüstitusest õigesti aru sain peaks midagi sellist tulema:
SELECT COUNT(*), d.dir_id
FROM dirs d
LEFT JOIN imgs i ON i.dir_id=d.dir_id
GROUP BY d.dir_id

_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 27.10.2009 23:41:46 vasta tsitaadiga

kuule see natuke vana ei ole? 2002 aasta. mingi 2nd edition on 2004
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 28.10.2009 00:09:34 vasta tsitaadiga

Põhimõtted on samad, ei PHP ega MySQL SQL dialekt ei ole oluliselt muutunud.
_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  mysqli optimiseerimine mine lehele eelmine  1, 2
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.