|
Тема
|
Помогнете за една MySQL заявка
|
|
Автор | нy зaяц (Нерегистриран) |
Публикувано | 01.09.05 10:57 |
|
Ако имаме следната таблица
ID Num Data
1 20 8
2 15 6
3 20 10
4 20 7
5 15 8
смисъла на полето Num e ID'ta от друга таблица
Искам да се направи заявка която да ми изкара ID 3 и 5 понеже:
максималната Data за Num = 20 е 10 - стойностите за Num = 20 са (8,10,7)
а максималната Data за Num = 15 е 8 - стойностите за Num = 15 са (6,8)
Т.е търсим тези ID'та с максималното Date за всеки различен Num
Самата таблица има над 11000 записа ако може да с еима в предвид при констроирането на заявката от гледна точка на бързината на изпълнението.
Ще съм много благодарен ако някой успее да помогне
Благодаря предварително.
| |
Тема
|
Re: Помогнете за една MySQL заявка
[re: нy зaяц]
|
|
Автор |
Dakota (erotoman) |
Публикувано | 01.09.05 13:16 |
|
Въпросът ти удивително много прилича на .
Everything louder than everything else...
| |
Тема
|
Re: Помогнете за една MySQL заявка
[re: Dakota]
|
|
Автор | нy зaяц (Нерегистриран) |
Публикувано | 01.09.05 14:35 |
|
Да наистина много прилича, а аз разгледах това мнение след като бях постнал моето но има една разлика че при мен е от значение да изважда само по едно ID за дадено Num а самите Date не са подредени по нарастващ ред. А другото е че при база с големина от 11000 записа заявки с по сложни субкуерита почти блокира пц'то аз пробвай някакви варианти при които обработката на заявката отне повече от 10 мин
| |
Тема
|
Re: Помогнете за една MySQL заявка
[re: нy зaяц]
|
|
Автор |
salle (един такъв) |
Публикувано | 01.09.05 15:16 |
|
А индекси нямаш ли?
Какво казва EXPLAIN по въпроса?
Пробвай т.нар. Max concat трик
| |
Тема
|
Re: Помогнете за една MySQL заявка
[re: нy зaяц]
|
|
Автор |
Dakota (erotoman) |
Публикувано | 01.09.05 15:29 |
|
Да де, и там трябваше да излезе само по едно a_id за дадено b_id, и c не беше подредено по големина. Поне аз не виждам никаква разлика, освен в имената на колоните.
А за скоростта на изпълнението, трябва да видиш какво дава explain, както каза salle.
Everything louder than everything else...
| |
Тема
|
Re: Помогнете за една MySQL заявка
[re: нy зaяц]
|
|
Автор | nu zaqc (Нерегистриран) |
Публикувано | 01.09.05 16:16 |
|
Hmm EXPLAIN kaza mnogo raboi koito na men chestno kazano nishto ne mi goworqt - opredeleno dosta raboti neznam w mysql.
Opitah se da resha problema kato razbih zaqwkite na 2 chasti i s pomoshta na php gi obrabotwam. Reshenieto rabot no e bawno wse pak .
Ima li nachin tezi 2 zaqwki da se optimizirat w edna i da se zaobikoli polzwaneto na php?
TABLE1 e tablica q koqto se sydyrjat unikalnite Num te sa primary key
TABLE2 e tablicata koqto sym posochil w pyrwiq si post
Eto taka reshih problema s PHP/ima li po elegantno reshenie samo s mysql zaqwka spored was?/
select Num from TABLE1 - zapiswam rezultatite w masiw1
select max(Data) from TABLE2 where Num = /tuk izrejdam rezultatite ot gorniq masiw1 - i priswoqwam za wsqko Num poluchenoto max(Data) w drug masiw2;
select ID from TABLE2 where Num = /danni ot masiw1 / and Data = /danni ot masiw2/
| |
Тема
|
Re: Помогнете за една MySQL заявка
[re: nu zaqc]
|
|
Автор |
_danitu (аз) |
Публикувано | 01.09.05 16:51 |
|
SELECT Num, MAX(Data)
FROM `table`
GROUP BY Num; ти дава максималното Data за всеки Num , пъхни го във временна таблица
| |
Тема
|
Re: ... погоди ...
[re: nu zaqc]
|
|
Автор |
salle (един такъв) |
Публикувано | 01.09.05 18:23 |
|
Та какво рече EXPLAIN?
Както Даниту ти рече винаги можеш да:
CREATE TEMPORARY TABLE tmp SELECT ...;
SELECT ... FROM tmp ... ;
Ама може и да може и без
| |
Тема
|
blagodarq na wsichki
[re: salle]
|
|
Автор | nu zaqc (Нерегистриран) |
Публикувано | 01.09.05 20:12 |
|
Da towa koeto me posywetwa danitu pomogna, s wremena tablica i tazi zaqwka rezultata se poluchawa byrzo i e korekten.
Blagodarq na wsichki za pomoshta!
| |
|
|
|
|