DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   Najgori SQL query na svetu (http://www.devprotalk.com/showthread.php?t=4920)

bluesman 20. 03. 2008. 03:18

Najgori SQL query na svetu
 
Jos uvek ne mogu da poverujem u ovo sto sam video veceras. Mislim da covek koji napise ovakav query ne samo da treba da dobije otkaz nego jos i batine:

SELECT DISTINCT users.id, users.membership, (((acos(sin((35.7589*pi()/180)) * sin((users.latitude*pi()/180))+cos((35.7589*pi()/180)) * cos((users.latitude*pi()/180)) * cos(((-78.7798- users.longitude)*pi()/180))))*180/pi())*60*1.1515) as distance
FROM users
INNER JOIN laston ON users.id = laston.user_id INNER JOIN z_9 AS s9 ON users.id = s9.user_id INNER JOIN z_12 AS s12 ON users.id = s12.user_id INNER JOIN z_13 AS s13 ON users.id = s13.user_id INNER JOIN z_14 AS s14 ON users.id = s14.user_id INNER JOIN z_15 AS s15 ON users.id = s15.user_id INNER JOIN z_16 AS s16 ON users.id = s16.user_id INNER JOIN z_17 AS s17 ON users.id = s17.user_id INNER JOIN z_18 AS s18 ON users.id = s18.user_id INNER JOIN z_19 AS s19 ON users.id = s19.user_id INNER JOIN z_21 AS s21 ON users.id = s21.user_id INNER JOIN z_22 AS s22 ON users.id = s22.user_id INNER JOIN z_23 AS s23 ON users.id = s23.user_id INNER JOIN z_24 AS s24 ON users.id = s24.user_id INNER JOIN z_25 AS s25 ON users.id = s25.user_id INNER JOIN z_27 AS s27 ON users.id = s27.user_id INNER JOIN z_29 AS s29 ON users.id = s29.user_id INNER JOIN z_31 AS s31 ON users.id = s31.user_id INNER JOIN z_32 AS s32 ON users.id = s32.user_id INNER JOIN z_33 AS s33 ON users.id = s33.user_id INNER JOIN z_35 AS s35 ON users.id = s35.user_id INNER JOIN z_38 AS s38 ON users.id = s38.user_id INNER JOIN z_39 AS s39 ON users.id = s39.user_id INNER JOIN z_40 AS s40 ON users.id = s40.user_id INNER JOIN z_41 AS s41 ON users.id = s41.user_id INNER JOIN z_42 AS s42 ON users.id = s42.user_id INNER JOIN z_50 AS s50 ON users.id = s50.user_id INNER JOIN z_51 AS s51 ON users.id = s51.user_id INNER JOIN z_53 AS s53 ON users.id = s53.user_id INNER JOIN z_55 AS s55 ON users.id = s55.user_id INNER JOIN z_58 AS s58 ON users.id = s58.user_id INNER JOIN z_60 AS s60 ON users.id = s60.user_id
WHERE 1 AND users.gender = '4112' AND users.seeking = '4092' AND (s9.option_id = '137' OR s9.option_id = '138' OR s9.option_id = '139' OR s9.option_id = '140' OR s9.option_id = '141' OR s9.option_id = '142' OR s9.option_id = '433' OR s9.option_id = '434' OR s9.option_id = '481' OR s9.option_id = '482') AND (s12.option_id = '214' OR s12.option_id = '215' OR s12.option_id = '216' OR s12.option_id = '217' OR s12.option_id = '218' OR s12.option_id = '220') AND (s13.option_id = '221' OR s13.option_id = '222' OR s13.option_id = '223' OR s13.option_id = '224' OR s13.option_id = '225' OR s13.option_id = '226' OR s13.option_id = '227' OR s13.option_id = '429' OR s13.option_id = '435' OR s13.option_id = '495') AND (s14.option_id = '228' OR s14.option_id = '229' OR s14.option_id = '230' OR s14.option_id = '231' OR s14.option_id = '488' OR s14.option_id = '489' OR s14.option_id = '646') AND (s15.option_id = '232' OR s15.option_id = '233' OR s15.option_id = '234' OR s15.option_id = '645') AND (s16.option_id = '238' OR s16.option_id = '239' OR s16.option_id = '240') AND (s17.option_id = '242' OR s17.option_id = '243' OR s17.option_id = '244' OR s17.option_id = '245' OR s17.option_id = '246' OR s17.option_id = '436') AND (s18.option_id = '248' OR s18.option_id = '249' OR s18.option_id = '250' OR s18.option_id = '251' OR s18.option_id = '252' OR s18.option_id = '253' OR s18.option_id = '254' OR s18.option_id = '437') AND (s19.option_id = '256' OR s19.option_id = '257' OR s19.option_id = '258' OR s19.option_id = '259' OR s19.option_id = '260' OR s19.option_id = '261' OR s19.option_id = '262' OR s19.option_id = '263' OR s19.option_id = '264' OR s19.option_id = '265') AND (s21.option_id = '276' OR s21.option_id = '277' OR s21.option_id = '278' OR s21.option_id = '279' OR s21.option_id = '280' OR s21.option_id = '281' OR s21.option_id = '282' OR s21.option_id = '283') AND (s22.option_id = '285' OR s22.option_id = '286' OR s22.option_id = '287' OR s22.option_id = '288' OR s22.option_id = '492' OR s22.option_id = '493' OR s22.option_id = '494') AND (s23.option_id = '290' OR s23.option_id = '291' OR s23.option_id = '292' OR s23.option_id = '491' OR s23.option_id = '663') AND (s24.option_id = '294' OR s24.option_id = '295' OR s24.option_id = '296' OR s24.option_id = '297' OR s24.option_id = '298') AND (s25.option_id = '299' OR s25.option_id = '300' OR s25.option_id = '301' OR s25.option_id = '302' OR s25.option_id = '454' OR s25.option_id = '455') AND (s27.option_id = '312' OR s27.option_id = '313' OR s27.option_id = '314' OR s27.option_id = '315' OR s27.option_id = '316' OR s27.option_id = '317' OR s27.option_id = '318' OR s27.option_id = '319' OR s27.option_id = '320' OR s27.option_id = '344') AND (s29.option_id = '321' OR s29.option_id = '322' OR s29.option_id = '323' OR s29.option_id = '324' OR s29.option_id = '325' OR s29.option_id = '326' OR s29.option_id = '327' OR s29.option_id = '328' OR s29.option_id = '329' OR s29.option_id = '330') AND (s31.option_id = '333' OR s31.option_id = '334' OR s31.option_id = '335' OR s31.option_id = '336' OR s31.option_id = '337' OR s31.option_id = '338' OR s31.option_id = '339' OR s31.option_id = '341' OR s31.option_id = '342') AND (s32.option_id = '348' OR s32.option_id = '350' OR s32.option_id = '351' OR s32.option_id = '352' OR s32.option_id = '353' OR s32.option_id = '354' OR s32.option_id = '355' OR s32.option_id = '356' OR s32.option_id = '357' OR s32.option_id = '358') AND (s33.option_id = '362' OR s33.option_id = '363' OR s33.option_id = '364' OR s33.option_id = '365' OR s33.option_id = '366' OR s33.option_id = '367' OR s33.option_id = '368' OR s33.option_id = '369' OR s33.option_id = '370' OR s33.option_id = '371') AND (s35.option_id = '372' OR s35.option_id = '373' OR s35.option_id = '374' OR s35.option_id = '375' OR s35.option_id = '449' OR s35.option_id = '450' OR s35.option_id = '567' OR s35.option_id = '568' OR s35.option_id = '569' OR s35.option_id = '571') AND (s38.option_id = '376' OR s38.option_id = '377' OR s38.option_id = '378' OR s38.option_id = '379' OR s38.option_id = '380' OR s38.option_id = '381' OR s38.option_id = '382' OR s38.option_id = '383' OR s38.option_id = '384' OR s38.option_id = '385') AND (s39.option_id = '386' OR s39.option_id = '387' OR s39.option_id = '388' OR s39.option_id = '389' OR s39.option_id = '390' OR s39.option_id = '391' OR s39.option_id = '392' OR s39.option_id = '393' OR s39.option_id = '394' OR s39.option_id = '395') AND (s40.option_id = '402' OR s40.option_id = '403' OR s40.option_id = '404' OR s40.option_id = '405' OR s40.option_id = '406' OR s40.option_id = '407' OR s40.option_id = '408' OR s40.option_id = '409' OR s40.option_id = '410' OR s40.option_id = '411') AND (s41.option_id = '413' OR s41.option_id = '414' OR s41.option_id = '415' OR s41.option_id = '416' OR s41.option_id = '417' OR s41.option_id = '418' OR s41.option_id = '419') AND (s42.option_id = '421' OR s42.option_id = '422' OR s42.option_id = '423' OR s42.option_id = '424' OR s42.option_id = '425' OR s42.option_id = '426' OR s42.option_id = '427' OR s42.option_id = '453' OR s42.option_id = '641' OR s42.option_id = '643') AND (s50.option_id = '496' OR s50.option_id = '497' OR s50.option_id = '498' OR s50.option_id = '499' OR s50.option_id = '500' OR s50.option_id = '501' OR s50.option_id = '502' OR s50.option_id = '503' OR s50.option_id = '504' OR s50.option_id = '505') AND (s51.option_id = '509' OR s51.option_id = '510' OR s51.option_id = '511' OR s51.option_id = '512' OR s51.option_id = '513' OR s51.option_id = '514' OR s51.option_id = '515' OR s51.option_id = '516' OR s51.option_id = '517' OR s51.option_id = '518') AND (s53.option_id = '538' OR s53.option_id = '539' OR s53.option_id = '540' OR s53.option_id = '541' OR s53.option_id = '542' OR s53.option_id = '543' OR s53.option_id = '544' OR s53.option_id = '545' OR s53.option_id = '546' OR s53.option_id = '547') AND (s55.option_id = '4152' OR s55.option_id = '4162' OR s55.option_id = '4172' OR s55.option_id = '4182' OR s55.option_id = '4192' OR s55.option_id = '4202' OR s55.option_id = '4212' OR s55.option_id = '4222' OR s55.option_id = '4232' OR s55.option_id = '4242') AND (s58.option_id = '605' OR s58.option_id = '606' OR s58.option_id = '607' OR s58.option_id = '608' OR s58.option_id = '609' OR s58.option_id = '610' OR s58.option_id = '611' OR s58.option_id = '612' OR s58.option_id = '613' OR s58.option_id = '614') AND (s60.option_id = '682' OR s60.option_id = '683') AND users.approved = '1' AND users.deleted = '0' and users.main_photo_id !=0 AND (users.latitude > 35.3239421622 AND users.latitude < 36.1938578378) AND (users.longitude > -79.3142578966 AND users.longitude < -78.2453421034) AND users.dob > '1957-03-19' AND users.dob < '1988-03-19' AND users.id != '1' AND users.id NOT IN (SELECT blocked_user_id FROM blocked WHERE user_id = '1') AND users.id NOT IN (SELECT user_id FROM personal_definitions_attention) ORDER BY distance ASC LIMIT 500


Ovo sam dobio od coveka koji odrzava jedan server i koji kao i ja ne moze da se nacudi koji ludak moze ovo da napise. Hajde neko ako sme neka pusti ovaj query :)

bluesman 20. 03. 2008. 03:24

Da dodam da je ovo query koji se izvrsava na jako posecenom sajtu koji ima preko 6000 kverija u sekundi, i da dodam da su srbi autori ovog remek dela.

Evo sada kada gledam verovatno je to neki advanced search form pa trazi distance preko ZIP i longitude... + ima sliku, + nije obrisan + jos milion nekih stvari koje ni ne razumem... Ja bre kada imam vise od 3 JOIN-a po queriju - radim redesign baze, a ovo u zivotu nisam video... iskreno nisam ni znao da moze ovo :)

Sajt koristi 10 SQL servera i vlasnici ne mogu da se nacude kako hardware ne moze da pokrije zahtevnost :)

conica 20. 03. 2008. 03:36

evo ja cu da budem veoma iskrena, pa makar me nazvali neznalicom (:)): ja ovo ne bih UMELA da napisem
znaci totalno bih se zagubila kod treceg JOIN-a

edit: apropo, treba odati priznanje autoru..ovo je trebalo znati napisati

bluesman 20. 03. 2008. 03:45

To sam i ja rekao :)

Nego evo jos komentara administratora servera:

Citat:

inace, onaj kveri sam pustio na masteru pre vise od pola sata
i jos nije zavrsio
a master je ZVER
pazi, master ima 12 diskova u raid 10
16G rama
4 CPU-a
mislim, sta reci ;)
zver ;)
a ovo jos uvek traje ;)))
2600 sec i traje jos uvek
ne mogu vise da cekam, prekinucu ga :))))

Milos Vukotic 20. 03. 2008. 03:52

Off Topic: 'bem ti ovakvo radno vrijeme...

Pored svega ostalog, ovo je wtf samo za sebe:
users.gender = '4112'

Je li "gender" u smislu "pol"? Koliko ih moze biti? :)

conica 20. 03. 2008. 03:59

↑ LOL

Off Topic: a svaki put obecam sebi da cu leci pre 6

ppavlovic 20. 03. 2008. 04:26

Meni se dopada ono:

WHERE 1 AND users.gender = '4112'

P.S. Koji je kod generator koristio za ovako nesto ???

Mislim, kad sam pokusao da pravim jedan dating sajt, dosao samo do 5-6 joina ... i to se jaako sporo izvrsavalo. Pa sam onda zaboravio na normalizacije koje te uce u skoli. I sve je bilo kako treba. :)

twix 20. 03. 2008. 08:27

Cemu ovo sluzi a uz to i ne radi :1064: salim se, da li moze da se vidi sajt koji u pozadini mrsi ovaj sql ?

Aleksandar.Ilic 20. 03. 2008. 10:02

i jos ako nesto ovde nije indexirano :O

bofh 20. 03. 2008. 10:14

upit je u svakom slučaju skandalozan i lolkastičan.

ono što je meni skoro jednako skandalozno što se nigde ne primećuje opasno brkanje lončića.

sysadmin != dba != web developer

i da, btw, glupost je univerzalna stvar, tako da to nema veze sa srbima... ko se usprotivi tome proglasiću ga za izdajnilka lol

cvele 20. 03. 2008. 10:16

graficki alati za izradu querija su cudo :)

jablan 20. 03. 2008. 10:22

Ma nije samo query u pitanju, obratite pažnju na tabele koje se zovu z_9..z_55.

Database obfuscator?

skaarj 20. 03. 2008. 10:28

Ovo je ocigledno generisano kodom i to zato sto su tabele denormalizovane zbog brzine upisa... Imam i ja u nekim projektima (koje takodje spasavam :)) iste ovakve bisere, doduse ne bas ovako komplikovane ali to se desava kada imas tabele ovakvog tipa koje sadrze milione slogova:

`id` int(11) NOT NULL AUTO_INCREMENT,
`wm_id` int(11) NOT NULL DEFAULT '0',
`domain_id` int(11) NOT NULL DEFAULT '0',
`month_date` date NOT NULL DEFAULT '0000-00-00',
`typ_01` int(11) NOT NULL DEFAULT '0',
`hit_01` int(11) NOT NULL DEFAULT '0',
`usa_01` int(11) NOT NULL DEFAULT '0',
`typ_02` int(11) NOT NULL DEFAULT '0',
`hit_02` int(11) NOT NULL DEFAULT '0',
`usa_02` int(11) NOT NULL DEFAULT '0',
`typ_03` int(11) NOT NULL DEFAULT '0',
`hit_03` int(11) NOT NULL DEFAULT '0',
`usa_03` int(11) NOT NULL DEFAULT '0',
`typ_04` int(11) NOT NULL DEFAULT '0',
`hit_04` int(11) NOT NULL DEFAULT '0',
`usa_04` int(11) NOT NULL DEFAULT '0',
`typ_05` int(11) NOT NULL DEFAULT '0',
`hit_05` int(11) NOT NULL DEFAULT '0',
`usa_05` int(11) NOT NULL DEFAULT '0',
`typ_06` int(11) NOT NULL DEFAULT '0',
`hit_06` int(11) NOT NULL DEFAULT '0',
`usa_06` int(11) NOT NULL DEFAULT '0',
`typ_07` int(11) NOT NULL DEFAULT '0',
`hit_07` int(11) NOT NULL DEFAULT '0',
`usa_07` int(11) NOT NULL DEFAULT '0',
`typ_08` int(11) NOT NULL DEFAULT '0',
`hit_08` int(11) NOT NULL DEFAULT '0',
`usa_08` int(11) NOT NULL DEFAULT '0',
`typ_09` int(11) NOT NULL DEFAULT '0',
`hit_09` int(11) NOT NULL DEFAULT '0',
`usa_09` int(11) NOT NULL DEFAULT '0',
`typ_10` int(11) NOT NULL DEFAULT '0',
`hit_10` int(11) NOT NULL DEFAULT '0',
`usa_10` int(11) NOT NULL DEFAULT '0',
`typ_11` int(11) NOT NULL DEFAULT '0',
`hit_11` int(11) NOT NULL DEFAULT '0',
`usa_11` int(11) NOT NULL DEFAULT '0',
`typ_12` int(11) NOT NULL DEFAULT '0',
`hit_12` int(11) NOT NULL DEFAULT '0',
`usa_12` int(11) NOT NULL DEFAULT '0',
`typ_13` int(11) NOT NULL DEFAULT '0',
`hit_13` int(11) NOT NULL DEFAULT '0',
`usa_13` int(11) NOT NULL DEFAULT '0',
`typ_14` int(11) NOT NULL DEFAULT '0',
`hit_14` int(11) NOT NULL DEFAULT '0',
`usa_14` int(11) NOT NULL DEFAULT '0',
`typ_15` int(11) NOT NULL DEFAULT '0',
`hit_15` int(11) NOT NULL DEFAULT '0',
`usa_15` int(11) NOT NULL DEFAULT '0',
`typ_16` int(11) NOT NULL DEFAULT '0',
`hit_16` int(11) NOT NULL DEFAULT '0',
`usa_16` int(11) NOT NULL DEFAULT '0',
`typ_17` int(11) NOT NULL DEFAULT '0',
`hit_17` int(11) NOT NULL DEFAULT '0',
`usa_17` int(11) NOT NULL DEFAULT '0',
`typ_18` int(11) NOT NULL DEFAULT '0',
`hit_18` int(11) NOT NULL DEFAULT '0',
`usa_18` int(11) NOT NULL DEFAULT '0',
`typ_19` int(11) NOT NULL DEFAULT '0',
`hit_19` int(11) NOT NULL DEFAULT '0',
`usa_19` int(11) NOT NULL DEFAULT '0',
`typ_20` int(11) NOT NULL DEFAULT '0',
`hit_20` int(11) NOT NULL DEFAULT '0',
`usa_20` int(11) NOT NULL DEFAULT '0',
`typ_21` int(11) NOT NULL DEFAULT '0',
`hit_21` int(11) NOT NULL DEFAULT '0',
`usa_21` int(11) NOT NULL DEFAULT '0',
`typ_22` int(11) NOT NULL DEFAULT '0',
`hit_22` int(11) NOT NULL DEFAULT '0',
`usa_22` int(11) NOT NULL DEFAULT '0',
`typ_23` int(11) NOT NULL DEFAULT '0',
`hit_23` int(11) NOT NULL DEFAULT '0',
`usa_23` int(11) NOT NULL DEFAULT '0',
`typ_24` int(11) NOT NULL DEFAULT '0',
`hit_24` int(11) NOT NULL DEFAULT '0',
`usa_24` int(11) NOT NULL DEFAULT '0',
`typ_25` int(11) NOT NULL DEFAULT '0',
`hit_25` int(11) NOT NULL DEFAULT '0',
`usa_25` int(11) NOT NULL DEFAULT '0',
`typ_26` int(11) NOT NULL DEFAULT '0',
`hit_26` int(11) NOT NULL DEFAULT '0',
`usa_26` int(11) NOT NULL DEFAULT '0',
`typ_27` int(11) NOT NULL DEFAULT '0',
`hit_27` int(11) NOT NULL DEFAULT '0',
`usa_27` int(11) NOT NULL DEFAULT '0',
`typ_28` int(11) NOT NULL DEFAULT '0',
`hit_28` int(11) NOT NULL DEFAULT '0',
`usa_28` int(11) NOT NULL DEFAULT '0',
`typ_29` int(11) NOT NULL DEFAULT '0',
`hit_29` int(11) NOT NULL DEFAULT '0',
`usa_29` int(11) NOT NULL DEFAULT '0',
`typ_30` int(11) NOT NULL DEFAULT '0',
`hit_30` int(11) NOT NULL DEFAULT '0',
`usa_30` int(11) NOT NULL DEFAULT '0',
`typ_31` int(11) NOT NULL DEFAULT '0',
`hit_31` int(11) NOT NULL DEFAULT '0',
`usa_31` int(11) NOT NULL DEFAULT '0',
`typ_total` bigint(20) NOT NULL DEFAULT '0',
`hit_total` bigint(20) NOT NULL DEFAULT '0',
`usa_total` bigint(20) NOT NULL DEFAULT '0',

robi-bobi 20. 03. 2008. 10:58

jel znate kako se uzima poslednji zapis iz baze?
Kôd:

SELECT * FROM ....
$r = mysql_query...

i onda!
Kôd:


while($row = mysql_fetch_array(..)) {
  $arr[] = $row;
}

$n = mysq_num_rows
return $arr[$n]

ovo je zateknut kod nekih indijaca na jaaako posecenom sajtu
bio ovo pre jednooo pa, pre 2 godine
jos uvek ga pamtim :D

cvele 20. 03. 2008. 11:09

jbt, ali jbt

Dejan Topalovic 20. 03. 2008. 11:25

Nije to nista - mi smo do skoro koristili jednu aplikaciju, koja je na osnovu proslijedjenih parametara dinamicki generisala SQL upite. Odstampao sam najduzi SQL upit i nalijepio na zid. Sta mislte koliko A4 stranica je bilo potrebno da se odstampa citav upit?

24 stranice!

To je bila jedna 3rd party aplikacija, a baza je bila Oracle 9i sa 16 GB RAM-a i 8 CPUs, koju smo zamijenili novom in-house aplikacijom na Oracle 10g i sad su upiti kraci za oko 80% i munjevito se izvrsavaju...

Kad mi neko spomene neke Buildere, Generatore i sl., odmah pocnem da kolutam ocima...

Ilija Studen 20. 03. 2008. 13:41

Ne verujem da ćemo sa našim rešenjem zagrditi baš ovoliko, ali me nervira kako stvari trenutno izgledaju (o ovome sam pričao na meetupu prošli vikend):

Kôd:

SELECT acx_activity_logs.*
  FROM acx_activity_logs, acx_project_objects
  WHERE acx_activity_logs.object_id = acx_project_objects.id AND ((acx_project_objects.project_id = '23' AND (acx_project_objects.type IN ('discussion', 'page', 'ticket', 'timerecord') OR acx_project_objects.parent_type IN ('discussion', 'page', 'ticket', 'timerecord'))) OR (acx_project_objects.project_id = 31)) AND acx_activity_logs.created_by_id != '3' AND acx_project_objects.state >= '1' AND acx_project_objects.visibility >= '1'
  ORDER BY acx_activity_logs.created_on DESC
  LIMIT 0, 15

Problem je ovaj deo:

Kôd:

((acx_project_objects.project_id = '23' AND (acx_project_objects.type IN ('discussion', 'page', 'ticket', 'timerecord') OR acx_project_objects.parent_type IN ('discussion', 'page', 'ticket', 'timerecord'))) OR (acx_project_objects.project_id = 31))
Pošto svaki korisnik na svakom projektu može imati različite dozvole (na nekima sme da vidi tickete, na nekima ne pa tako za svaki) tipovi koje sistem traži nisu poznati unapred, već se na osnovu dozvola i projekta određuju. Ovaj deo uslova se množi brojem aktivnih projekata kojima korisnik ima pristup (gore je primer samo za jedan).

Kao što rekoh, nismo zagrdili kao ovi gore, ali mi se rešenje ne sviđa previše.

mangia 23. 03. 2008. 18:48

Ima i onih koji nisu culi za auto increm. polje pa svaki put vrse prebrojavanje pa dodaju 1 na taj iznos i tek tada rade INSERT :)

E par takvih je diplomiralo a ja jos nisam...

bluesman 03. 06. 2009. 17:32

Evo novog kandidata, ovo je stvarno za analizu, ne querija nego onoga ko ga je napisao (naki latvijac, šta li je, 'bem ga... uvalili su mi ga u team):

SELECT * FROM complaints WHERE status=1 and ( LEFT(phone, 4) LIKE '01234%' OR LEFT(phone, 4) LIKE '01361%' OR LEFT(phone, 4) LIKE '01525%' OR LEFT(phone, 4) LIKE '01582%' OR LEFT(phone, 4) LIKE '01767%' OR LEFT(phone, 4) LIKE '01462%' OR LEFT(phone, 4) LIKE '01344%' OR LEFT(phone, 4) LIKE '01488%' OR LEFT(phone, 4) LIKE '01628%' OR LEFT(phone, 4) LIKE '01635%' OR LEFT(phone, 4) LIKE '0118%' OR LEFT(phone, 4) LIKE '01753%' OR LEFT(phone, 4) LIKE '0117%' OR LEFT(phone, 4) LIKE '01296%' OR LEFT(phone, 4) LIKE '01280%' OR LEFT(phone, 4) LIKE '01494%' OR LEFT(phone, 4) LIKE '01908%' OR LEFT(phone, 4) LIKE '01633%' OR LEFT(phone, 4) LIKE '01844%' OR LEFT(phone, 4) LIKE '01353%' OR LEFT(phone, 4) LIKE '01480%' OR LEFT(phone, 4) LIKE '01354%' OR LEFT(phone, 4) LIKE '01945%' OR LEFT(phone, 4) LIKE '01223%' OR LEFT(phone, 4) LIKE '01733%' OR LEFT(phone, 4) LIKE '01244%' OR LEFT(phone, 4) LIKE '01260%' OR LEFT(phone, 4) LIKE '01270%' OR LEFT(phone, 4) LIKE '01565%' OR LEFT(phone, 4) LIKE '01625%' OR LEFT(phone, 4) LIKE '01606%' OR LEFT(phone, 4) LIKE '01928%' OR LEFT(phone, 4) LIKE '01925%' OR LEFT(phone, 4) LIKE '0151%' OR LEFT(phone, 4) LIKE '01208%' OR LEFT(phone, 4) LIKE '01288%' OR LEFT(phone, 4) LIKE '01840%' OR LEFT(phone, 4) LIKE '01326%' OR LEFT(phone, 4) LIKE '01566%' OR LEFT(phone, 4) LIKE '01579%' OR LEFT(phone, 4) LIKE '01503%' OR LEFT(phone, 4) LIKE '01637%' OR LEFT(phone, 4) LIKE '01841%' OR LEFT(phone, 4) LIKE '01736%' OR LEFT(phone, 4) LIKE '01209%' OR LEFT(phone, 4) LIKE '01726%' OR LEFT(phone, 4) LIKE '01872%' OR LEFT(phone, 4) LIKE '01720%' OR LEFT(phone, 4) LIKE '01752%' OR LEFT(phone, 4) LIKE '01388%' OR LEFT(phone, 4) LIKE '01207%' OR LEFT(phone, 4) LIKE '01325%' OR LEFT(phone, 4) LIKE '0191%' OR LEFT(phone, 4) LIKE '01429%' OR LEFT(phone, 4) LIKE '01833%' OR LEFT(phone, 4) LIKE '01642%' OR LEFT(phone, 4) LIKE '01740%' OR LEFT(phone, 4) LIKE '017683%' OR LEFT(phone, 4) LIKE '01229%' OR LEFT(phone, 4) LIKE '01228%' OR LEFT(phone, 4) LIKE '015395%' OR LEFT(phone, 4) LIKE '01539%' OR LEFT(phone, 4) LIKE '017687%' OR LEFT(phone, 4) LIKE '01768%' OR LEFT(phone, 4) LIKE '015396%' OR LEFT(phone, 4) LIKE '01946%' OR LEFT(phone, 4) LIKE '016973%' OR LEFT(phone, 4) LIKE '01900%' OR LEFT(phone, 4) LIKE '01697%' OR LEFT(phone, 4) LIKE '01899%' OR LEFT(phone, 4) LIKE '016974%' OR LEFT(phone, 4) LIKE '016977%' OR LEFT(phone, 4) LIKE '017684%' OR LEFT(phone, 4) LIKE '019467%' OR LEFT(phone, 4) LIKE '01434%' OR LEFT(phone, 4) LIKE '015394%' OR LEFT(phone, 4) LIKE '015242%' OR LEFT(phone, 4) LIKE '01335%' OR LEFT(phone, 4) LIKE '01298%' OR LEFT(phone, 4) LIKE '01246%' OR LEFT(phone, 4) LIKE '01457%' OR LEFT(phone, 4) LIKE '01629%' OR LEFT(phone, 4) LIKE '01663%' OR LEFT(phone, 4) LIKE '01773%' OR LEFT(phone, 4) LIKE '01332%' OR LEFT(phone, 4) LIKE '0115%' OR LEFT(phone, 4) LIKE '0114%' OR LEFT(phone, 4) LIKE '01623%' OR LEFT(phone, 4) LIKE '01283%' OR LEFT(phone, 4) LIKE '01364%' OR LEFT(phone, 4) LIKE '01297%' OR LEFT(phone, 4) LIKE '01271%' OR LEFT(phone, 4) LIKE '01237%' OR LEFT(phone, 4) LIKE '01395%' OR LEFT(phone, 4) LIKE '01363%' OR LEFT(phone, 4) LIKE '01392%' OR LEFT(phone, 4) LIKE '01404%' OR LEFT(phone, 4) LIKE '01548%' OR LEFT(phone, 4) LIKE '01647%' OR LEFT(phone, 4) LIKE '01626%' OR LEFT(phone, 4) LIKE '01837%' OR LEFT(phone, 4) LIKE '01822%' OR LEFT(phone, 4) LIKE '01884%' OR LEFT(phone, 4) LIKE '01803%' OR LEFT(phone, 4) LIKE '01580%' OR LEFT(phone, 4) LIKE '01258%' OR LEFT(phone, 4) LIKE '01202%' OR LEFT(phone, 4) LIKE '01308%' OR LEFT(phone, 4) LIKE '01305%' OR LEFT(phone, 4) LIKE '01747%' OR LEFT(phone, 4) LIKE '01929%' OR LEFT(phone, 4) LIKE '01300%' OR LEFT(phone, 4) LIKE '01963%' OR LEFT(phone, 4) LIKE '01262%' OR LEFT(phone, 4) LIKE '01377%' OR LEFT(phone, 4) LIKE '01405%' OR LEFT(phone, 4) LIKE '01430%' OR LEFT(phone, 4) LIKE '01759%' OR LEFT(phone, 4) LIKE '01482%' OR LEFT(phone, 4) LIKE '01964%' OR LEFT(phone, 4) LIKE '01323%' OR LEFT(phone, 4) LIKE '01797%' OR LEFT(phone, 4) LIKE '01825%' OR LEFT(phone, 4) LIKE '01273%' OR LEFT(phone, 4) LIKE '01424%' OR LEFT(phone, 4) LIKE '01892%' OR LEFT(phone, 4) LIKE '01268%' OR LEFT(phone, 4) LIKE '01376%' OR LEFT(phone, 4) LIKE '01277%' OR LEFT(phone, 4) LIKE '01245%' OR LEFT(phone, 4) LIKE '01255%' OR LEFT(phone, 4) LIKE '01206%' OR LEFT(phone, 4) LIKE '01371%' OR LEFT(phone, 4) LIKE '01621%' OR LEFT(phone, 4) LIKE '01799%' OR LEFT(phone, 4) LIKE '01955%' OR LEFT(phone, 4) LIKE '01992%' OR LEFT(phone, 4) LIKE '020%' OR LEFT(phone, 4) LIKE '01375%' OR LEFT(phone, 4) LIKE '01787%' OR LEFT(phone, 4) LIKE '01702%' OR LEFT(phone, 4) LIKE '01454%' OR LEFT(phone, 4) LIKE '01285%' OR LEFT(phone, 4) LIKE '01453%' OR LEFT(phone, 4) LIKE '01452%' OR LEFT(phone, 4) LIKE '01594%' OR LEFT(phone, 4) LIKE '01451%' OR LEFT(phone, 4) LIKE '01242%' OR LEFT(phone, 4) LIKE '01608%' OR LEFT(phone, 4) LIKE '01531%' OR LEFT(phone, 4) LIKE '01666%' OR LEFT(phone, 4) LIKE '01684%' OR LEFT(phone, 4) LIKE '01204%' OR LEFT(phone, 4) LIKE '01706%' OR LEFT(phone, 4) LIKE '01942%' OR LEFT(phone, 4) LIKE '0161%' OR LEFT(phone, 4) LIKE '01252%' OR LEFT(phone, 4) LIKE '01420%' OR LEFT(phone, 4) LIKE '01264%' OR LEFT(phone, 4) LIKE '01256%' OR LEFT(phone, 4) LIKE '01730%' OR LEFT(phone, 4) LIKE '01425%' OR LEFT(phone, 4) LIKE '01962%' OR LEFT(phone, 4) LIKE '023%' OR LEFT(phone, 4) LIKE '01489%' OR LEFT(phone, 4) LIKE '01243%' OR LEFT(phone, 4) LIKE '01886%' OR LEFT(phone, 4) LIKE '01432%' OR LEFT(phone, 4) LIKE '01544%' OR LEFT(phone, 4) LIKE '01568%' OR LEFT(phone, 4) LIKE '01279%' OR LEFT(phone, 4) LIKE '01257%' OR LEFT(phone, 4) LIKE '01442%' OR LEFT(phone, 4) LIKE '01707%' OR LEFT(phone, 4) LIKE '01763%' OR LEFT(phone, 4) LIKE '01727%' OR LEFT(phone, 4) LIKE '01920%' OR LEFT(phone, 4) LIKE '01923%' OR LEFT(phone, 4) LIKE '01983%' OR LEFT(phone, 4) LIKE '01227%' OR LEFT(phone, 4) LIKE '01322%' OR LEFT(phone, 4) LIKE '01304%' OR LEFT(phone, 4) LIKE '01303%' OR LEFT(phone, 4) LIKE '01474%' OR LEFT(phone, 4) LIKE '01622%' OR LEFT(phone, 4) LIKE '01732%' OR LEFT(phone, 4) LIKE '01795%' OR LEFT(phone, 4) LIKE '01959%' OR LEFT(phone, 4) LIKE '01987%' OR LEFT(phone, 4) LIKE '01843%' OR LEFT(phone, 4) LIKE '01634%' OR LEFT(phone, 4) LIKE '01254%' OR LEFT(phone, 4) LIKE '01253%' OR LEFT(phone, 4) LIKE '01282%' OR LEFT(phone, 4) LIKE '01200%' OR LEFT(phone, 4) LIKE '01995%' OR LEFT(phone, 4) LIKE '01524%' OR LEFT(phone, 4) LIKE '01695%' OR LEFT(phone, 4) LIKE '01772%' OR LEFT(phone, 4) LIKE '01455%' OR LEFT(phone, 4) LIKE '0116%' OR LEFT(phone, 4) LIKE '01509%' OR LEFT(phone, 4) LIKE '01858%' OR LEFT(phone, 4) LIKE '01664%' OR LEFT(phone, 4) LIKE '01530%' OR LEFT(phone, 4) LIKE '01975%' OR LEFT(phone, 4) LIKE '01205%' OR LEFT(phone, 4) LIKE '01652%' OR LEFT(phone, 4) LIKE '01427%' OR LEFT(phone, 4) LIKE '01476%' OR LEFT(phone, 4) LIKE '01472%' OR LEFT(phone, 4) LIKE '01406%' OR LEFT(phone, 4) LIKE '01522%' OR LEFT(phone, 4) LIKE '01507%' OR LEFT(phone, 4) LIKE '01673%' OR LEFT(phone, 4) LIKE '01724%' OR LEFT(phone, 4) LIKE '01754%' OR LEFT(phone, 4) LIKE '01529%' OR LEFT(phone, 4) LIKE '01775%' OR LEFT(phone, 4) LIKE '01790%' OR LEFT(phone, 4) LIKE '01780%' OR LEFT(phone, 4) LIKE '01778%' OR LEFT(phone, 4) LIKE '01469%' OR LEFT(phone, 4) LIKE '01704%' OR LEFT(phone, 4) LIKE '01744%' OR LEFT(phone, 4) LIKE '01263%' OR LEFT(phone, 4) LIKE '01362%' OR LEFT(phone, 4) LIKE '01379%' OR LEFT(phone, 4) LIKE '01366%' OR LEFT(phone, 4) LIKE '01328%' OR LEFT(phone, 4) LIKE '01493%' OR LEFT(phone, 4) LIKE '01485%' OR LEFT(phone, 4) LIKE '01553%' OR LEFT(phone, 4) LIKE '01692%' OR LEFT(phone, 4) LIKE '01760%' OR LEFT(phone, 4) LIKE '01842%' OR LEFT(phone, 4) LIKE '01953%' OR LEFT(phone, 4) LIKE '01508%' OR LEFT(phone, 4) LIKE '01603%' OR LEFT(phone, 4) LIKE '01677%' OR LEFT(phone, 4) LIKE '01423%' OR LEFT(phone, 4) LIKE '01347%' OR LEFT(phone, 4) LIKE '01287%' OR LEFT(phone, 4) LIKE '01439%' OR LEFT(phone, 4) LIKE '01969%' OR LEFT(phone, 4) LIKE '01653%' OR LEFT(phone, 4) LIKE '01609%' OR LEFT(phone, 4) LIKE '01751%' OR LEFT(phone, 4) LIKE '01748%' OR LEFT(phone, 4) LIKE '01765%' OR LEFT(phone, 4) LIKE '01723%' OR LEFT(phone, 4) LIKE '01757%' OR LEFT(phone, 4) LIKE '01729%' OR LEFT(phone, 4) LIKE '01756%' OR LEFT(phone, 4) LIKE '01845%' OR LEFT(phone, 4) LIKE '01947%' OR LEFT(phone, 4) LIKE '01904%' OR LEFT(phone, 4) LIKE '01937%' OR LEFT(phone, 4) LIKE '01327%' OR LEFT(phone, 4) LIKE '01536%' OR LEFT(phone, 4) LIKE '01604%' OR LEFT(phone, 4) LIKE '01933%' OR LEFT(phone, 4) LIKE '01832%' OR LEFT(phone, 4) LIKE '01665%' OR LEFT(phone, 4) LIKE '01670%' OR LEFT(phone, 4) LIKE '01661%' OR LEFT(phone, 4) LIKE '01669%' OR LEFT(phone, 4) LIKE '01289%' OR LEFT(phone, 4) LIKE '01668%' OR LEFT(phone, 4) LIKE '01636%' OR LEFT(phone, 4) LIKE '01777%' OR LEFT(phone, 4) LIKE '01909%' OR LEFT(phone, 4) LIKE '01949%' OR LEFT(phone, 4) LIKE '01295%' OR LEFT(phone, 4) LIKE '01869%' OR LEFT(phone, 4) LIKE '01367%' OR LEFT(phone, 4) LIKE '01491%' OR LEFT(phone, 4) LIKE '01993%' OR LEFT(phone, 4) LIKE '01235%' OR LEFT(phone, 4) LIKE '01572%' OR LEFT(phone, 4) LIKE '01746%' OR LEFT(phone, 4) LIKE '01694%' OR LEFT(phone, 4) LIKE '01584%' OR LEFT(phone, 4) LIKE '01630%' OR LEFT(phone, 4) LIKE '01691%' OR LEFT(phone, 4) LIKE '01743%' OR LEFT(phone, 4) LIKE '01952%' OR LEFT(phone, 4) LIKE '01939%' OR LEFT(phone, 4) LIKE '01948%' OR LEFT(phone, 4) LIKE '01588%' OR LEFT(phone, 4) LIKE '01299%' OR LEFT(phone, 4) LIKE '01225%' OR LEFT(phone, 4) LIKE '01278%' OR LEFT(phone, 4) LIKE '01460%' OR LEFT(phone, 4) LIKE '01275%' OR LEFT(phone, 4) LIKE '01398%' OR LEFT(phone, 4) LIKE '01373%' OR LEFT(phone, 4) LIKE '01458%' OR LEFT(phone, 4) LIKE '01643%' OR LEFT(phone, 4) LIKE '01749%' OR LEFT(phone, 4) LIKE '01823%' OR LEFT(phone, 4) LIKE '01984%' OR LEFT(phone, 4) LIKE '01934%' OR LEFT(phone, 4) LIKE '01935%' OR LEFT(phone, 4) LIKE '01226%' OR LEFT(phone, 4) LIKE '01302%' OR LEFT(phone, 4) LIKE '01709%' OR LEFT(phone, 4) LIKE '01543%' OR LEFT(phone, 4) LIKE '01785%' OR LEFT(phone, 4) LIKE '01827%' OR LEFT(phone, 4) LIKE '01889%' OR LEFT(phone, 4) LIKE '01782%' OR LEFT(phone, 4) LIKE '01538%' OR LEFT(phone, 4) LIKE '01986%' OR LEFT(phone, 4) LIKE '01394%' OR LEFT(phone, 4) LIKE '01440%' OR LEFT(phone, 4) LIKE '01502%' OR LEFT(phone, 4) LIKE '01638%' OR LEFT(phone, 4) LIKE '01728%' OR LEFT(phone, 4) LIKE '01449%' OR LEFT(phone, 4) LIKE '01284%' OR LEFT(phone, 4) LIKE '01473%' OR LEFT(phone, 4) LIKE '01233%' OR LEFT(phone, 4) LIKE '01276%' OR LEFT(phone, 4) LIKE '01883%' OR LEFT(phone, 4) LIKE '01306%' OR LEFT(phone, 4) LIKE '01372%' OR LEFT(phone, 4) LIKE '01483%' OR LEFT(phone, 4) LIKE '01428%' OR LEFT(phone, 4) LIKE '01737%' OR LEFT(phone, 4) LIKE '01784%' OR LEFT(phone, 4) LIKE '01932%' OR LEFT(phone, 4) LIKE '01293%' OR LEFT(phone, 4) LIKE '01567%' OR LEFT(phone, 4) LIKE '01675%' OR LEFT(phone, 4) LIKE '01788%' OR LEFT(phone, 4) LIKE '01926%' OR LEFT(phone, 4) LIKE '01789%' OR LEFT(phone, 4) LIKE '024%' OR LEFT(phone, 4) LIKE '01564%' OR LEFT(phone, 4) LIKE '0121%' OR LEFT(phone, 4) LIKE '01384%' OR LEFT(phone, 4) LIKE '01922%' OR LEFT(phone, 4) LIKE '01902%' OR LEFT(phone, 4) LIKE '01342%' OR LEFT(phone, 4) LIKE '01444%' OR LEFT(phone, 4) LIKE '01403%' OR LEFT(phone, 4) LIKE '01903%' OR LEFT(phone, 4) LIKE '01798%' OR LEFT(phone, 4) LIKE '01274%' OR LEFT(phone, 4) LIKE '01422%' OR LEFT(phone, 4) LIKE '01484%' OR LEFT(phone, 4) LIKE '01535%' OR LEFT(phone, 4) LIKE '0113%' OR LEFT(phone, 4) LIKE '01977%' OR LEFT(phone, 4) LIKE '01924%' OR LEFT(phone, 4) LIKE '01943%' OR LEFT(phone, 4) LIKE '01980%' OR LEFT(phone, 4) LIKE '01249%' OR LEFT(phone, 4) LIKE '01380%' OR LEFT(phone, 4) LIKE '01672%' OR LEFT(phone, 4) LIKE '01722%' OR LEFT(phone, 4) LIKE '01793%' OR LEFT(phone, 4) LIKE '01985%' OR LEFT(phone, 4) LIKE '01386%' OR LEFT(phone, 4) LIKE '01562%' OR LEFT(phone, 4) LIKE '01905%' OR LEFT(phone, 4) LIKE '01527%') ORDER BY id DESC LIMIT 0, 6


Čisto za informaciju da objasnim o čemu se radi: treba da izvuče iz jedne tabele zadnih 6 record-a vezanih za određeni country. Pa "brainiac" umesto da kaže " where country = 'xxxx' " on iz druge tabele pokupi sve area codeove za tu country pa onda generise ovakav query. WTF?

Sva sreća pa sam video u kodu pre nego što je pušten sajt. I posle mi kažu "nemoj da im gledaš kod"? Gde da ne gledam, treba da se blamiram sa ovakvim budalaštinama.

mangia 03. 06. 2009. 18:11

Nema pretjerane veze ali ja sam vidio desetine ljudi koji da bi posjetili neki sajt, prvo otvore Google a onda u polje za pretragu ukucaju URL na koji žele ići. Google im kao prvi rezultat obično vrati isti taj link i tek onda kliknu na njega i posjete sajt.

Jednostavno misle da je Google upravo za to namjenjen. Strahota..

nixa 03. 06. 2009. 18:13

^ ima toga dosta, ja rodjenoj majci ne mogu da objasnim da se tako to ne radi

bOkIcA 03. 06. 2009. 18:36

Imam i ja biser od pre dve godine kad sam se nesto zaradio pa sam hteo da mi upit odradi svu matematiku sveta.
Sto je najveci fazon to je i radilo jedino sto mu je trebalo par minuta.
Smejao sam se sam sebi tri dana kakav sam idiot. :1003:

No ne znam da li da objavim sacuvani...
Svi ce mi se smejati. :1007:

razno 03. 06. 2009. 18:46

Ja nemogu ni da procitam ovaj upit koliko je dugacak :D

Peca 03. 06. 2009. 19:00

takav upit uglavnom neka petlja generise.
niko nije bas tolko lud da takvu kobasicu rucno pravi...
jedino sto ne vode racuna koliko ta kobasica posle naraste....

bOkIcA 03. 06. 2009. 19:54

PHP kôd:

$query "SELECT @done_date:=done_date as done_date, report.creation_date AS creation_date, report.id AS id, @hours:=hours as hours, @overtime_a:=overtime_a as overtime_a, @overtime_b:=overtime_b as overtime_b, object.name AS name, @objectId := object.id, work_type.title AS work_type, job_status.title AS job_status,
                    @sum_price_extra_material:=( SELECT SUM(extra_material.quantity * extra_material.price) FROM extra_material WHERE report.id = extra_material.id_report ) AS sum_price_extra_material,
                    @sum_price_material:=( SELECT SUM((material.quantity + ((@ttt:=material.id_article) * 0)) *
                                            ( select if (d.discount_value is null, p.price, p.price * d.discount_value / 100)  as price
                                                from `article` a, `price` p, `group` g
                                                    left join discount d on d.id_group = g.id
                                                        and d.id_object = 
$idObject
                                                        and d.id = (select id from discount where id_group = g.id and (date(@done_date) < end_date or end_date is null) order by id limit 1)
                                                where
                                                    a.id = @ttt
                                                    and a.id = p.id_article
                                                    and p.id = (select id from price where id_article = a.id and (date(@done_date) < end_date or end_date is null) order by id limit 1)
                                                    and a.id_group = g.id)
                                        ) FROM material WHERE report.id = material.id_report ) AS sum_price_material,
                    comment.comment,
                    @done_date as date,
                    @price_per_hour1:=( SELECT workhour FROM work_price WHERE id_object = @objectId AND end_date IS NULL ),
                    @price_per_hour:= IF ( @price_per_hour1 IS NULL, 0, @price_per_hour1 ) AS price_per_hour,
                    @price_per_overtime_a1:=( SELECT overtime_a FROM work_price WHERE id_object = @objectId AND end_date IS NULL ),
                    @price_per_overtime_a:= IF ( @price_per_overtime_a1 IS NULL, 0, @price_per_overtime_a1 ) AS price_per_overtime_a,
                    @price_per_overtime_b1:=( SELECT overtime_b FROM work_price WHERE id_object = @objectId AND end_date IS NULL ),
                    @price_per_overtime_b:= IF ( @price_per_overtime_b1 IS NULL, 0, @price_per_overtime_b1 ) AS price_per_overtime_b,
                    @hours_price:=( @hours * @price_per_hour ) as hours_price,
                    @overtime_a_price:=( @overtime_a * @price_per_overtime_a ) as overtime_a_price,
                    @overtime_b_price:=( @overtime_b * @price_per_overtime_b ) as overtime_b_price,
                    @sum_hours_prices:=( @hours_price + @overtime_a_price + @overtime_b_price ) as sum_hours_prices,
                    @sum_all_prices:=( @sum_hours_prices + ( IF ( @sum_price_extra_material is null, 0, @sum_price_extra_material ) ) + ( IF ( @sum_price_material is null, 0, @sum_price_material ) ) ) as sum_all_prices,
                    object.temp as is_temp
                FROM report
                    LEFT JOIN comment ON comment.id_report = report.id,
                    activities
                    LEFT JOIN object ON activities.id_customer = object.id
                    LEFT JOIN job_status ON activities.id_job_status = job_status.id,
                    work_type
                WHERE report.id_user = 
$idUser
                    AND done_date >= '
$dateFrom'
                    AND done_date <= '
$dateTo'
                    AND report.id_activity = activities.id
                    -- AND activities.id_job_status = 4
                    AND report.id_work_type = work_type.id
                ORDER BY is_temp ASC, date DESC"


:1054: kad sam vec zakuvao

bluesman 03. 06. 2009. 20:23

Bilo bi interesantno provući ovakav query kroz EXPLAIN... siguran sam da bi MySQL pozvao neki SWAT team da reaguje ;)

dinke 03. 06. 2009. 20:23

Citat:

Originalno napisao Milos Vukotic (Napišite 52839)
Off Topic: 'bem ti ovakvo radno vrijeme...

Pored svega ostalog, ovo je wtf samo za sebe:
users.gender = '4112'

Je li "gender" u smislu "pol"? Koliko ih moze biti? :)

Ahaha, mislim da sam imao dodir sa tom bazom, ako se dobro secam pored onog klasicnog jednostavnog (male/female) tamo postoje i razne druge kategorije (lesbian, gay, shemale itd.) :) Ovo je 21 vek ko kaze da moze biti jednostavno ;)

dukacar 04. 06. 2009. 00:16

Citat:

Originalno napisao bluesman (Napišite 52834)
Jos uvek ne mogu da poverujem u ovo sto sam video veceras. Mislim da covek koji napise ovakav query ne samo da treba da dobije otkaz nego jos i batine:

SELECT DISTINCT users.id, users.membership, (((acos(sin((35.7589*pi()/180)) * sin((users.latitude*pi()/180))+cos((35.7589*pi()/180)) * cos((users.latitude*pi()/180)) * cos(((-78.7798- users.longitude)*pi()/180))))*180/pi())*60*1.1515) as distance
FROM users
INNER JOIN laston ON users.id = laston.user_id INNER JOIN z_9 AS s9 ON users.id = s9.user_id INNER JOIN z_12 AS s12 ON users.id = s12.user_id INNER JOIN z_13 AS s13 ON users.id = s13.user_id INNER JOIN z_14 AS s14 ON users.id = s14.user_id INNER JOIN z_15 AS s15 ON users.id = s15.user_id INNER JOIN z_16 AS s16 ON users.id = s16.user_id INNER JOIN z_17 AS s17 ON users.id = s17.user_id INNER JOIN z_18 AS s18 ON users.id = s18.user_id INNER JOIN z_19 AS s19 ON users.id = s19.user_id INNER JOIN z_21 AS s21 ON users.id = s21.user_id INNER JOIN z_22 AS s22 ON users.id = s22.user_id INNER JOIN z_23 AS s23 ON users.id = s23.user_id INNER JOIN z_24 AS s24 ON users.id = s24.user_id INNER JOIN z_25 AS s25 ON users.id = s25.user_id INNER JOIN z_27 AS s27 ON users.id = s27.user_id INNER JOIN z_29 AS s29 ON users.id = s29.user_id INNER JOIN z_31 AS s31 ON users.id = s31.user_id INNER JOIN z_32 AS s32 ON users.id = s32.user_id INNER JOIN z_33 AS s33 ON users.id = s33.user_id INNER JOIN z_35 AS s35 ON users.id = s35.user_id INNER JOIN z_38 AS s38 ON users.id = s38.user_id INNER JOIN z_39 AS s39 ON users.id = s39.user_id INNER JOIN z_40 AS s40 ON users.id = s40.user_id INNER JOIN z_41 AS s41 ON users.id = s41.user_id INNER JOIN z_42 AS s42 ON users.id = s42.user_id INNER JOIN z_50 AS s50 ON users.id = s50.user_id INNER JOIN z_51 AS s51 ON users.id = s51.user_id INNER JOIN z_53 AS s53 ON users.id = s53.user_id INNER JOIN z_55 AS s55 ON users.id = s55.user_id INNER JOIN z_58 AS s58 ON users.id = s58.user_id INNER JOIN z_60 AS s60 ON users.id = s60.user_id
WHERE 1 AND users.gender = '4112' AND users.seeking = '4092' AND (s9.option_id = '137' OR s9.option_id = '138' OR s9.option_id = '139' OR s9.option_id = '140' OR s9.option_id = '141' OR s9.option_id = '142' OR s9.option_id = '433' OR s9.option_id = '434' OR s9.option_id = '481' OR s9.option_id = '482') AND (s12.option_id = '214' OR s12.option_id = '215' OR s12.option_id = '216' OR s12.option_id = '217' OR s12.option_id = '218' OR s12.option_id = '220') AND (s13.option_id = '221' OR s13.option_id = '222' OR s13.option_id = '223' OR s13.option_id = '224' OR s13.option_id = '225' OR s13.option_id = '226' OR s13.option_id = '227' OR s13.option_id = '429' OR s13.option_id = '435' OR s13.option_id = '495') AND (s14.option_id = '228' OR s14.option_id = '229' OR s14.option_id = '230' OR s14.option_id = '231' OR s14.option_id = '488' OR s14.option_id = '489' OR s14.option_id = '646') AND (s15.option_id = '232' OR s15.option_id = '233' OR s15.option_id = '234' OR s15.option_id = '645') AND (s16.option_id = '238' OR s16.option_id = '239' OR s16.option_id = '240') AND (s17.option_id = '242' OR s17.option_id = '243' OR s17.option_id = '244' OR s17.option_id = '245' OR s17.option_id = '246' OR s17.option_id = '436') AND (s18.option_id = '248' OR s18.option_id = '249' OR s18.option_id = '250' OR s18.option_id = '251' OR s18.option_id = '252' OR s18.option_id = '253' OR s18.option_id = '254' OR s18.option_id = '437') AND (s19.option_id = '256' OR s19.option_id = '257' OR s19.option_id = '258' OR s19.option_id = '259' OR s19.option_id = '260' OR s19.option_id = '261' OR s19.option_id = '262' OR s19.option_id = '263' OR s19.option_id = '264' OR s19.option_id = '265') AND (s21.option_id = '276' OR s21.option_id = '277' OR s21.option_id = '278' OR s21.option_id = '279' OR s21.option_id = '280' OR s21.option_id = '281' OR s21.option_id = '282' OR s21.option_id = '283') AND (s22.option_id = '285' OR s22.option_id = '286' OR s22.option_id = '287' OR s22.option_id = '288' OR s22.option_id = '492' OR s22.option_id = '493' OR s22.option_id = '494') AND (s23.option_id = '290' OR s23.option_id = '291' OR s23.option_id = '292' OR s23.option_id = '491' OR s23.option_id = '663') AND (s24.option_id = '294' OR s24.option_id = '295' OR s24.option_id = '296' OR s24.option_id = '297' OR s24.option_id = '298') AND (s25.option_id = '299' OR s25.option_id = '300' OR s25.option_id = '301' OR s25.option_id = '302' OR s25.option_id = '454' OR s25.option_id = '455') AND (s27.option_id = '312' OR s27.option_id = '313' OR s27.option_id = '314' OR s27.option_id = '315' OR s27.option_id = '316' OR s27.option_id = '317' OR s27.option_id = '318' OR s27.option_id = '319' OR s27.option_id = '320' OR s27.option_id = '344') AND (s29.option_id = '321' OR s29.option_id = '322' OR s29.option_id = '323' OR s29.option_id = '324' OR s29.option_id = '325' OR s29.option_id = '326' OR s29.option_id = '327' OR s29.option_id = '328' OR s29.option_id = '329' OR s29.option_id = '330') AND (s31.option_id = '333' OR s31.option_id = '334' OR s31.option_id = '335' OR s31.option_id = '336' OR s31.option_id = '337' OR s31.option_id = '338' OR s31.option_id = '339' OR s31.option_id = '341' OR s31.option_id = '342') AND (s32.option_id = '348' OR s32.option_id = '350' OR s32.option_id = '351' OR s32.option_id = '352' OR s32.option_id = '353' OR s32.option_id = '354' OR s32.option_id = '355' OR s32.option_id = '356' OR s32.option_id = '357' OR s32.option_id = '358') AND (s33.option_id = '362' OR s33.option_id = '363' OR s33.option_id = '364' OR s33.option_id = '365' OR s33.option_id = '366' OR s33.option_id = '367' OR s33.option_id = '368' OR s33.option_id = '369' OR s33.option_id = '370' OR s33.option_id = '371') AND (s35.option_id = '372' OR s35.option_id = '373' OR s35.option_id = '374' OR s35.option_id = '375' OR s35.option_id = '449' OR s35.option_id = '450' OR s35.option_id = '567' OR s35.option_id = '568' OR s35.option_id = '569' OR s35.option_id = '571') AND (s38.option_id = '376' OR s38.option_id = '377' OR s38.option_id = '378' OR s38.option_id = '379' OR s38.option_id = '380' OR s38.option_id = '381' OR s38.option_id = '382' OR s38.option_id = '383' OR s38.option_id = '384' OR s38.option_id = '385') AND (s39.option_id = '386' OR s39.option_id = '387' OR s39.option_id = '388' OR s39.option_id = '389' OR s39.option_id = '390' OR s39.option_id = '391' OR s39.option_id = '392' OR s39.option_id = '393' OR s39.option_id = '394' OR s39.option_id = '395') AND (s40.option_id = '402' OR s40.option_id = '403' OR s40.option_id = '404' OR s40.option_id = '405' OR s40.option_id = '406' OR s40.option_id = '407' OR s40.option_id = '408' OR s40.option_id = '409' OR s40.option_id = '410' OR s40.option_id = '411') AND (s41.option_id = '413' OR s41.option_id = '414' OR s41.option_id = '415' OR s41.option_id = '416' OR s41.option_id = '417' OR s41.option_id = '418' OR s41.option_id = '419') AND (s42.option_id = '421' OR s42.option_id = '422' OR s42.option_id = '423' OR s42.option_id = '424' OR s42.option_id = '425' OR s42.option_id = '426' OR s42.option_id = '427' OR s42.option_id = '453' OR s42.option_id = '641' OR s42.option_id = '643') AND (s50.option_id = '496' OR s50.option_id = '497' OR s50.option_id = '498' OR s50.option_id = '499' OR s50.option_id = '500' OR s50.option_id = '501' OR s50.option_id = '502' OR s50.option_id = '503' OR s50.option_id = '504' OR s50.option_id = '505') AND (s51.option_id = '509' OR s51.option_id = '510' OR s51.option_id = '511' OR s51.option_id = '512' OR s51.option_id = '513' OR s51.option_id = '514' OR s51.option_id = '515' OR s51.option_id = '516' OR s51.option_id = '517' OR s51.option_id = '518') AND (s53.option_id = '538' OR s53.option_id = '539' OR s53.option_id = '540' OR s53.option_id = '541' OR s53.option_id = '542' OR s53.option_id = '543' OR s53.option_id = '544' OR s53.option_id = '545' OR s53.option_id = '546' OR s53.option_id = '547') AND (s55.option_id = '4152' OR s55.option_id = '4162' OR s55.option_id = '4172' OR s55.option_id = '4182' OR s55.option_id = '4192' OR s55.option_id = '4202' OR s55.option_id = '4212' OR s55.option_id = '4222' OR s55.option_id = '4232' OR s55.option_id = '4242') AND (s58.option_id = '605' OR s58.option_id = '606' OR s58.option_id = '607' OR s58.option_id = '608' OR s58.option_id = '609' OR s58.option_id = '610' OR s58.option_id = '611' OR s58.option_id = '612' OR s58.option_id = '613' OR s58.option_id = '614') AND (s60.option_id = '682' OR s60.option_id = '683') AND users.approved = '1' AND users.deleted = '0' and users.main_photo_id !=0 AND (users.latitude > 35.3239421622 AND users.latitude < 36.1938578378) AND (users.longitude > -79.3142578966 AND users.longitude < -78.2453421034) AND users.dob > '1957-03-19' AND users.dob < '1988-03-19' AND users.id != '1' AND users.id NOT IN (SELECT blocked_user_id FROM blocked WHERE user_id = '1') AND users.id NOT IN (SELECT user_id FROM personal_definitions_attention) ORDER BY distance ASC LIMIT 500


Ovo sam dobio od coveka koji odrzava jedan server i koji kao i ja ne moze da se nacudi koji ludak moze ovo da napise. Hajde neko ako sme neka pusti ovaj query :)

Je moj query, hvala svima na komentarima.

Sada jos nesto, primetio sam da svako nesto malo zapljune ali niko nije pruzio neku ideju za resenje ovakvih problema, mislim svi su pametni kada ne moraju da rese problem, jel?

Baza je takva kakva je i nisam je ja pravio, cak nisam pravio ni originalni query, nego samo prilagodio sistem da sljaka i isti sljaka, prethodno je zapucavao na vise od 10 uslova (sxx.option_id).
Sam kod iz formulara kreira query, tabele su denormalizovane da bi uopste mogao da se izvrsi.

Zahtev je takav da treba da odradi 100 uslova + ovo ostalo, suludo je znam ali ne odlucujem ja o ovakvim stvarima.

Mislim Bluesmane da radimo za istu firmu tako da mozes da mi sredis otkaz a za batine nisam siguran. Takodje mislim da bi prvo trebao da se obratis kolegama ako smatras da nesto moze bolje a onda da postujes savet kako se izbegavaju komplikovani queriji.

Ako neko ima neku ideju koja bi resila ovu stvar, bio bih mu zahvalan da je podeli sa mnom jer, iskreno, ni meni se ovo bas ne svidja. tu sam ako ima nekih pitanja.

Pozdrav svima i ne znam sta bih jos rekao, hvala vam.

jasmanac 04. 06. 2009. 00:54

Citat:

Mislim Bluesmane da radimo za istu firmu tako da mozes da mi sredis otkaz a za batine nisam siguran.
:seljak:

bOkIcA 04. 06. 2009. 01:00

Kako li je tema iznikla posle godinu i par meseci a prva poruka tek sad postala aktuelna?! :eek:

dukacar 04. 06. 2009. 01:16

Uh, uh.
Jasmanac, ne bih da ovo ode u pogresnom pravcu, ovo sto si postovao ne lici mi ni na kakvo resenje.

Moj komentar (koji si citirao) je bio u laganom afektu a za batine nisam siguran zato sto brzo trcim. :)

Ne bih da se sada ovde stvori neka prepirka, vise sam zaiteresovan za resenje.

Bokice, tema je postala aktivna jer sam saznao za nju tek sada.

bluesman 04. 06. 2009. 01:25

Mister, ne plaćam te ja, nisi ni u mom timu, ... otkaz mogu da spremim za ovog "mog" ( i dobio je poslednje upozorenje, ako još jednom vidim nešto slično tome može slobodno da počne da traži novi posao ), a "batine" su čisto zbog dramatizacije :) Posle celog dana objašnjavanja zašto to ne može tako, rekao sam mu jednostavno: "I don't know if you understand me, I don't know how to explain better, but this query has to go. We can not have query like that no matter what... Even if we don't display some data - fine... as long as this query is gone forever."

A što se tiče tvog problema, ovakvi problemi se rešavaju denormalizacijom i višestrukim querijima. Nije u "svetom pismu" zapisano da sve mora jednim querijem da se izvrši, čak je i dokazano da se neki naizgled jednostavni queriji brže iszvršavaju ako se podele u 2 optimizovana.

A ovo sam iskopirao ovde kada mi je system admin poslao taj query uz komentar koji ne želiš da čuješ i napomenuo da se izvršava već preko 20 minuta i svi drugi sajtovi na tom serveru imaju žešći problem. Ako se ne varam, čak je rekao da se izvršava nekoliko ovakvih querija istovremeno.

Posao developera nije posao daktilografa, ako već misliš da si "nasledio" problem, onda si trebao sa tvojim managerom da vidiš kako da rešiš problem i da ti neko pomogne oko sređivanja te baze, kreiranja dodatnih tabela, a ne da napišeš ovakav query i da sediš zadovoljan što si "otkačio jednu stavku". Nadam se da me razumeš šta hoću da kažem?

dukacar 04. 06. 2009. 02:10

Hmm, super. Vidi, bez ljutnje.

Kao što rekoh, nisam zadovoljan time a i sugerisao sam da to nema mnogo smisla.
Denormalizovao šta je bilo dozvoljeno a query izgleda ovako u ekstremnim slučajevima kojih najverovatnije ni nema (mislim da bi korisnike zaboleli zglobovi na kažiprstu kada bi pokušali da čekiraju svaku opciju).
Zašto pretpostavljaš da nisam sa svojim managerom razgovarao o tome i da predlog nije prihvaćen iz ovih ili onih razloga?
Mislim da znaš o kojim sajtovima se radi i rezultati u ovako ekstremnim slučajevima ne izlaze supersonično ali izlaze.

Voleo bih da vidim neki primer podele ovog querija u dva (ili više) optimizovana koji bi to brže odradili.

Zaista neću više postovati na ovu temu, osim da se zahvalim ako neko ima konkretno rešenje, u teoriju sam upućen i sam. Ne vidim kome bi pomogla debata oko problema za koji niko nema rešenje, osim sujetama.

Tnx Bluesmane.

bluesman 04. 06. 2009. 03:14

Vidi, ne ljutim se ja... samo mi je takva faca :)

Samo pokušavam da ti kažem šta mislim o tome. Ako si pokušao da rešiš problem i nisu zaključili da je potrebno da se menja bilo šta, onda sva krivica pada na njih (ne verujem da se on sam pita, mada i dalje mislim da može da ima dovoljno autonomije u odlučivanju da reši sam ovakve stvari).

Ja bih ti rado pomogao kada bih mogao da ustanovim šta stoji iza onih kriptičnih imena. Pa još na kraju limit 500 ? :)

BTW, cela frka je nastala kada su se admini žalili gazdama da postojeći hardver nije dovoljan jer je load ogroman, onda je počeo da kopa da vidi šta je problem i naišao na ove querije... dakle, nije da se ne izvršavaju - piče i razbijaju (bukvalno) :)

Jedno ipak moram da ti priznam, ovaj moj latvijac, litvanac... šta god da je... on te je prešišao sa ovim njegovim umotvorinama.

jablan 04. 06. 2009. 08:45

Jednostavno, čovek sebi mora da postavi granicu nivoa prljavštine koju će dozvoliti u kodu na kojem radi. Jasno je sve to, nasleđuje se svakakav kod i često se nema vremena da se stvari dovedu u red, ali granica negde mora da postoji.

Po meni uopšte nije čudno da u jednom trenutku, kad traže procenu za neki najbanalniji feature, tipa novi čekboks na formu za pretragu, dobiju nešto tipa "tri meseca". I trebalo bi da su svesni da nema smisla da onda kažu "ali za prethodni čekboks trebalo ti je pola sata". ;)

zidoo 04. 06. 2009. 09:41

^Nažalost u dosta slučajeva nije developer taj koji određuje koliko prljavštine ćeš da imaš, već "menađer". Ljudi koji vode projekat često nisu pretjerano upućeni u materiju, zapravi nisu uopšte pa se ide logikom: Aj sad napravi da radi, a poslje ćemo videt...

Ne opravdavam autora, samo želim da kažem da možda nije crno bjelo. I mene su "tjerali" jednom da pravim neki mutav SQL sa jedno 20-30 linije (AND,OR,JOIN)...

mangia 04. 06. 2009. 23:27

Dešavaju se debilni zahtjevi i to niko ne spori ali oniliki upit...

Samo parsiranje onog upita traje vječnost... Samo dok MySQL skonta šta tražiš od njega... a kamoli da "pljune" podatke...

blackshtef 05. 06. 2009. 11:40

Citat:

Originalno napisao zidoo (Napišite 70162)
^Nažalost u dosta slučajeva nije developer taj koji određuje koliko prljavštine ćeš da imaš, već "menađer". Ljudi koji vode projekat često nisu pretjerano upućeni u materiju, zapravi nisu uopšte pa se ide logikom: Aj sad napravi da radi, a poslje ćemo videt...

Ja ću se samo kratko ubaciti na ovo, nevezano uz SQL, ali vezano uz xHTML/CSS.

Jedna od najžešćih stvari mi je kada napravim fino validan kod, validator puca od zelenila, u footeru stoji "valid xhtml strict" oznaka, i onda dođe klijent, napuni site sadržajem (naravno, bolda tekst da bi bio "naslov", baca tablice jer je skužio da može i slično) i onda me pita zašto site nije validan...

facepalm

ivanbj 09. 06. 2009. 11:35

Citat:

Originalno napisao mangia (Napišite 70114)
Nema pretjerane veze ali ja sam vidio desetine ljudi koji da bi posjetili neki sajt, prvo otvore Google a onda u polje za pretragu ukucaju URL na koji žele ići. Google im kao prvi rezultat obično vrati isti taj link i tek onda kliknu na njega i posjete sajt.

Jednostavno misle da je Google upravo za to namjenjen. Strahota..

Imao sam situaciju da me čovek zove sa pričom da mu sajt ne radi...

Meni je radio, bili smo na istom provajderu, tvrdio je da mu problem traje danima, sve ostalo radi...

Ispostavilo se da je sajt pre prelaska na .rs domen indeksiran na .co.yu koji nije obnovljen, a da tip non stop adresu kuca u guglu i da mu kao prvi rezultat izlazi indeksirani neaktivan .co.yu domen

Milos Vukotic 09. 06. 2009. 11:46

Citat:

Originalno napisao jablan (Napišite 70160)
Jednostavno, čovek sebi mora da postavi granicu nivoa prljavštine koju će dozvoliti u kodu na kojem radi.

Neki dan primijetismo na sajtu klijenta tekst sa naslovom "Svjecki dan zaštite životne sredine". Dakle, svjeCki :1054:
To ti je nivo prljavštine, kad je PR neke firme polupismena neznalica...

Ulogovah se na phpMyAdmin i promijenih naslov (pitajući se usput "zašto, zašto je moje srce tako veliko?") - jednostavno nisam mogao da podnesem, iako bi trebalo da me boli uvo za to... :1058:


Vreme je GMT +2. Trenutno vreme je 01:30.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.