Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem kod sql upita

[es] :: MySQL :: Problem kod sql upita

[ Pregleda: 2546 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Emp
Podgorica

Član broj: 42014
Poruke: 54
95.155.8.*



Profil

icon Problem kod sql upita28.10.2009. u 08:16 - pre 175 meseci
Vježbam malo ovih dana sql i naiđoh na problem kod jednog zadatka.
Evo o čemu se radi.

Imamo sledeću tabelu:
PC(code, model, speed, ram, hd, cd, price)

Zadatak je sledeći:
Find the pairs of PC models having similar speeds and RAM. As a result, each resulting pair is shown only once, i.e. (i, j) but not (j, i).
Result set: model with higher number, model with lower number, speed, and RAM.


Moje rješenje je bilo :
Code:

SELECT  a.model model, b.model model, a.speed, b.ram
FROM PC a, PC b
WHERE 
a.model > b.model and
a.ram = b.ram and
a.speed= b.speed


Ali ovo rješenje ne radi.
U pitanju je jedno od zadataka sa sajta za vježbanje www.sql-ex.ru.
Tačnije, vježba broj 16.
I evo zaglavio sam na nju već 2-3 dana i nema šanse da je pređem.
Gdje griješim u mom rješenju?
 
Odgovor na temu

programer.master
krstarica
bg

Član broj: 235042
Poruke: 25
*.com
Via: [es] mailing liste



Profil

icon Re: Problem kod sql upita28.10.2009. u 08:33 - pre 175 meseci
>

--0016e6d783fccdeadd0476faa646
Content-Type: text/html; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable

probaj:<br>SELECT �a.model as model_i, b.model as model_j, a.speed, b.ram<br><br><br><br><br><div class="gmail_quote">2009/10/28 Emp <span dir="ltr">&lt;<a href="mailto:[email protected]">[email protected]</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Vje�bam malo ovih dana sql i nai�oh na problem kod jednog zadatka.<br>
Evo o �emu se radi.<br>
<br>
Imamo slede�u tabelu:<br>
PC(code, model, speed, ram, hd, cd, price)<br>
<br>
Zadatak je slede�i:<br>
Find the pairs of PC models having similar speeds and RAM. As a result, each resulting pair is shown only once, i.e. (i, j) but not (j, i).<br>
Result set: model with higher number, model with lower number, speed, and RAM. <br>
<br>
Moje rje�enje je bilo : <br>
<br>
Ali ovo rje�enje ne radi.<br>
U pitanju je jedno od zadataka sa sajta za vje�banje (<a href="http://www.sql-ex.ru" target="_blank">www.sql-ex.ru</a>: <a href="http://www.sql-ex.ru" target="_blank">http://www.sql-ex.ru</a> ).<br>
Ta�nije, vje�ba broj 16.<br>
I evo zaglavio sam na nju ve� 2-3 dana i nema �anse da je pre�em.<br>
Gdje grije�im u mom rje�enju?<br><font color="#888888">
<br>
--<br>
<a href="http://www.elitesecurity.org/p2424602" target="_blank">http://www.elitesecurity.org/p2424602</a><br>
<br>
Prijave/odjave: <a href="http://www.elitesecurity.org/liste" target="_blank">http://www.elitesecurity.org/liste</a><br>
<br>
Ne menjajte sledece dve linije ukoliko odgovarate putem emaila!<br>
esauth:379887:793c78a6e8171f389475bb12f3d78d7d<br>
 
Odgovor na temu

Emp
Podgorica

Član broj: 42014
Poruke: 54
95.155.8.*



Profil

icon Re: Problem kod sql upita29.10.2009. u 07:32 - pre 175 meseci
Iz prethodnog posta sam uspio pročitati samo
" probaj:SELECT a.model as model_i, b.model as model_j, a.speed, b.ram

I dalje nemam rješenje problema.
Nastavlja se mučenje:)
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem kod sql upita29.10.2009. u 08:27 - pre 175 meseci
ne moras da stavis AS .. to je zgodno posto tako postujes standard al uglavnom radi i bez (ali se navikavaj da stavljas)...

sto se tice problema, moram da priznam da uopste ne kontam sta si pitao :D sta znaci "having similar speeds and ram"... similar i equal nije isto ... koliki je raspon da bi nesto bilo similar? meni je 16M i 768M "similar" posto, to je sve "mnogo malo rama", 8-16G mi je "similar" posto je to "standardno rama" ... 64G - 128G mi je "similar" posto je to "dovoljno rama" .. preko 128G je "kez od uva do uva" ... dakle .. sta je similar?! +- koliko ?

kada definises sta znaci "similar" onda svoj upit prilagodis tome .. i to je to

sto se ponavljanja tice taj uslov da je model>model ti resava da ce uvek da bude par a,b i nikad b,a posto ako a,b zadovoljava da je a>b ne moze da bude zadovoljen uslov da je b>a ..
 
Odgovor na temu

Emp
Podgorica

Član broj: 42014
Poruke: 54
95.155.8.*



Profil

icon Re: Problem kod sql upita29.10.2009. u 13:39 - pre 175 meseci
Pise similar u datoj postavci zadatka,ali misli se equal.
I meni su tu malo bili nejasni,trebao sam to navesti.


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem kod sql upita29.10.2009. u 14:01 - pre 175 meseci
Code:

mysql> create table PC (model int auto_increment primary key, ram int, speed int) engine=myisam;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

mysql> insert into PC (ram, speed) select rand()*64, rand()*10;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> insert into PC (ram, speed) select rand()*10, rand()*5 from PC;
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> insert into PC (ram, speed) select rand()*10, rand()*5 from PC;
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> insert into PC (ram, speed) select rand()*10, rand()*5 from PC;
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> insert into PC (ram, speed) select rand()*10, rand()*5 from PC;
Query OK, 8 rows affected (0.00 sec)
Records: 8  Duplicates: 0  Warnings: 0

mysql> insert into PC (ram, speed) select rand()*10, rand()*5 from PC;
Query OK, 16 rows affected (0.00 sec)
Records: 16  Duplicates: 0  Warnings: 0

mysql> select * from PC;
+-------+------+-------+
| model | ram  | speed |
+-------+------+-------+
|     1 |   63 |     0 | 
|     2 |    2 |     4 | 
|     3 |    1 |     2 | 
|     4 |    5 |     2 | 
|     5 |    1 |     4 | 
|     6 |    1 |     3 | 
|     7 |    2 |     3 | 
|     8 |    3 |     4 | 
|     9 |    3 |     5 | 
|    10 |    9 |     2 | 
|    11 |    5 |     2 | 
|    12 |    5 |     0 | 
|    13 |    0 |     4 | 
|    14 |    9 |     1 | 
|    15 |    7 |     2 | 
|    16 |    2 |     3 | 
|    17 |    8 |     4 | 
|    18 |    5 |     2 | 
|    19 |   10 |     0 | 
|    20 |    1 |     3 | 
|    21 |    8 |     0 | 
|    22 |    7 |     3 | 
|    23 |    5 |     1 | 
|    24 |    9 |     1 | 
|    25 |    0 |     3 | 
|    26 |    0 |     2 | 
|    27 |    7 |     1 | 
|    28 |    4 |     0 | 
|    29 |    2 |     3 | 
|    30 |    5 |     3 | 
|    31 |    4 |     2 | 
|    32 |    1 |     4 | 
+-------+------+-------+
32 rows in set (0.00 sec)

mysql> SELECT  a.model model, b.model model, a.speed, b.ram
    -> FROM PC a, PC b
    -> WHERE 
    -> a.model > b.model and
    -> a.ram = b.ram and
    -> a.speed= b.speed;
+-------+-------+-------+------+
| model | model | speed | ram  |
+-------+-------+-------+------+
|    11 |     4 |     2 |    5 | 
|    18 |     4 |     2 |    5 | 
|    32 |     5 |     4 |    1 | 
|    20 |     6 |     3 |    1 | 
|    16 |     7 |     3 |    2 | 
|    29 |     7 |     3 |    2 | 
|    18 |    11 |     2 |    5 | 
|    24 |    14 |     1 |    9 | 
|    29 |    16 |     3 |    2 | 
+-------+-------+-------+------+
9 rows in set (0.00 sec)


Ja ne vidim da tvoj upit ne radi !? jedino mozda hoce da rezultat sortiras drugacije .... probal:

Code:


mysql> SELECT  a.model model1, b.model model2, a.speed, b.ram
    -> FROM PC a, PC b WHERE a.model > b.model and a.ram = b.ram and a.speed= b.speed
    -> ORDER BY model1;
+--------+--------+-------+------+
| model1 | model2 | speed | ram  |
+--------+--------+-------+------+
|     11 |      4 |     2 |    5 | 
|     16 |      7 |     3 |    2 | 
|     18 |     11 |     2 |    5 | 
|     18 |      4 |     2 |    5 | 
|     20 |      6 |     3 |    1 | 
|     24 |     14 |     1 |    9 | 
|     29 |      7 |     3 |    2 | 
|     29 |     16 |     3 |    2 | 
|     32 |      5 |     4 |    1 | 
+--------+--------+-------+------+
9 rows in set (0.00 sec)


 
Odgovor na temu

Emp
Podgorica

Član broj: 42014
Poruke: 54
95.155.8.*



Profil

icon Re: Problem kod sql upita30.10.2009. u 08:27 - pre 175 meseci
Bogdane,

hvala što si izdvojio vrijeme da mi pomogneš.


I ja sam bio ubijeđen da moj upit radi,ali u tom testnom vježbanju dobijam poruku da je uspio na glavnoj bazi ali na drugoj nije:

"your query produced correct result set on main database, but it failed test on second, checking database.
* Wrong number of records (more by 2)
This exercise has FAQ "

Pokušavaću da dodam/promijenim neke stvari u upitu,možda nađem rješenje.

 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem kod sql upita30.10.2009. u 09:32 - pre 175 meseci
ovaj link sto si ostavio .. oba upita tamo su glupost ...

aj probaj (mada ne vidim da ima ikakvog smisla al .):

Code:

SELECT DISTINCT  a.model model1, b.model model2, a.speed, a.ram
FROM PC a, PC b WHERE a.model > b.model and a.ram = b.ram and a.speed= b.speed
ORDER BY model1 DESC;



sad nesto mislim .. nigde ne pise da je model primarni kljuc .. mozda je tu neka fora .. bem li ga .. bas su mogli da napisu zadatak kako treba ... pocevsi od onog similar
 
Odgovor na temu

Emp
Podgorica

Član broj: 42014
Poruke: 54
95.155.8.*



Profil

icon Re: Problem kod sql upita30.10.2009. u 10:44 - pre 175 meseci
Ovo je tačno!

Znači, DISTINCT je bila karika koja nedostaje:)

Problem riješen.
Hvala Bogdane
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Problem kod sql upita30.10.2009. u 12:54 - pre 175 meseci
da to znaci da model nije primarnu kljuc tako da onda mozes da imas u bazi 3 puta model1 .. sto je potpuna glupost posto ce se pojaviti 3 puta ..

ne kapiram bas te SQL "skole" sa trik pitanjima gde nije fora da te nauce SQL nego da te obore na tome sto nisu dobro postavili zadatak ... posto da normalan covek dizanira tu tabelu model bi bio unique kljuc ili bi bio pk i onda taj distinct nema nikakvo znacenje. pritom, taj distinct usporava taj upit min 10%, uvodi novu temporary tabelu i radi table scan na njoj dakle ako je result set velik, taj distinct moze da doda i po 3-4 stotine procenata usporenje na upit ... cela poenta je da distinct koristis samo ako je stvarno potreban (kao naravno i svaku drugu stvar).,... jedina stvar koju mrzim vise od distinct u upitima je having.

ovo naravno nije kritika tebi, ti si u startu napisao upit koji radi, vec kritika budali koja je pisala ta pitanja .. / konceptu celog testa (dal sam rekao da mrrrrrrrziiiiiim testove) ... razumem ja da tom ruji engleski nije maternji jezik, al za pocetak similar ne znaci da je nesto "isto" .. i tako dalje i tako dalje .. da ne gubimo vise vreme, naboli smo sta su hteli :)
 
Odgovor na temu

[es] :: MySQL :: Problem kod sql upita

[ Pregleda: 2546 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.