Arsip: Script Sql Simpel tapi susah

 
user image
more 11 years ago

Penjahat

Halo... begini teman-teman, aku punya problem dengan sql yang sebelumnya nggak pernah aku alamin. aku pake Delphi 7 dengan MySql, koneksi menggunakan MyDac aku punya tabel kayak gini :
guid  A             B
----------------------
1     surabaya      2
2     semarang      2
3     malang        2
4     balikpapan    3
5     samarinda     3
6     sulawesi      4
7     makasar       4
output yang diinginkan adalah
guid  A             B
----------------------
3     malang        2
5     samarinda     3
7     makasar       4
yaitu guid terakhir dalam tiap group B jika kita gunakan simpel "group by B" maka outputnya adalah
guid  A             B
1     surabaya      2
4     balikpapam    3
6     sulawesi      4
tidak sesuai yang diinginkan mohon teman-teman, atas bantuannya sangat aku hormati
user image
more 11 years ago

cyber_hecker

[sql]SELECT DARI TEST WHERE GUID IN (SELECT MAX(GUID) ID DARI TEST GROUP BY B)[/sql] ganti kata DARI menjadi karena aneh nih delphi-id sekarang. setiap nulis kata * hasilnya jadi : Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, webmaster@delphi-id.org and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request. Apache/2.2.11 (Unix) mod_ssl/2.2.11 OpenSSL/0.9.7a mod_bwlimited/1.4 PHP/5.2.9 Server at delphi-id.org Port 80
user image
more 11 years ago

Penjahat

maksud mas cyber_hecker gini ya [sql]SELECT * F R O M tbname WHERE guid IN(SELECT MAX(guid) F R O M tbname GROUP BY B)[/sql] yupz sepertinya sangat membantu, terimakasih banget. tapi saya ada masalah baru, kalo kita pake cara di atas dengan ratusan ribu record kayaknya prosesnya akan cukup lambat, tapi saya belum buktiin. karena mungkin menurut saya kalo nggak salah, dengan metode DEPENDENT SUBQUERY, di dalam IN() ada fungsi SELECT F R O M tbname, maka server akan melakukan full scanning terhadap 2 table, dalam hal ini 2 t a b l e yang sama, yaitu "tbname". Dengan kata lain t a b e l tbname akan di-scan 2 kali. mohon maaf dan koreksinya kalo saya salah... kalo itu benar, kira-kira menurut mas cyber_hecker ada cara lain nggak, (sekedar pingin tau aja) mungkin dengan manipulasi index atau susunan record. Seperti kita tau SELECT dengan GROUP BY akan menghasilkan record pertama dalam setiap group. nah... mungkin kita bisa membalik susunan recordnya atau mungkin mas punya ide.... thanks banget ya mas, reply mas udah sangat membantu, ini hanya sekedar pingin tau aja. oh ya.... ternyata delphi-id sentimen ama kata kata 1. F R O M (tanpa spasi) 2. T A B L E (tanpa spasi) 3. ....
user image
more 11 years ago

_lmz

Kenapa menebak cara server jalankan sel ectnya kalau bisa dibuktikan? http://dev.mysql.com/doc/refman/5.0/en/explain.html
Seperti kita tau SEL ECT dengan GR OUP B Y akan menghasilkan record pertama dalam setiap group
Itu spesifik MySQL. Secara umum, semua kolom hasil SEL ECT dengan GRO UP BY harus merupakan aggregate atau termasuk dalam daftar GR OUP BY. Hasil yang dihasilkan MySQL pun belum tentu yang pertama:
Do not use this feature if the columns you omit from the GRO UP BY part are not constant in the group. The server is free to return any value from the group, so the results are indeterminate unless all values are the same.
Tentang ind ex siapa tahu in dex pada kolom (B ASC, guid DE SC) dapat menolong. Tapi tentu saja harus dibuktikan sendiri dengan jumlah data yang realistis. BTW: "proteksi" sql injection ini sangat menjengkelkan untuk tempat yang memang mendiskusikan SQL.
user image
more 11 years ago

Penjahat

OK... thankyou _lmz its very meaningful to me.....i appreciate that. thankyou...
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com