|
Тема
|
MySQL - избягване на вложен селект
|
|
Автор |
Ивaнyшka (3-ти царски син) |
Публикувано | 07.04.03 17:47 |
|
Задачка закачка:
Две таблици:
documents(docid, title, razdel, ...)
съдържа документи с уникален docid
rating(ratid, docid, ...)
гласуване за всеки документ - общия рейтинг се постига със сумиране.
Проблемът
Как да отделя документите от един раздел, сортирани по рейтинг и с работещ
LIMIT
Аз стигнах до едно решение с две TEMPORARY TABLE, но не ме удволетворява особенно
Българската литература
Е-журнал за нова българска литература
| |
Тема
|
Re: MySQL - избягване на вложен селект
[re: Ивaнyшka]
|
|
Автор |
Topбaлaн (любопитко) |
Публикувано | 07.04.03 18:31 |
|
SELECT sum( votes.vote ) AS total, memberpics.pic_name
FROM `votes`
LEFT JOIN memberpics
USING ( pic_id )
WHERE memberpics.pic_galery = 'конкурс: автопортрет'
GROUP BY votes.pic_id
ORDER BY total DESC
LIMIT 10
структурата е много подобна на твоята...
нещо подобно не ти ли върши работа ?
| |
Тема
|
Re: MySQL - избягване на вложен селект
[re: Topбaлaн]
|
|
Автор |
Ивaнyшka (3-ти царски син) |
Публикувано | 08.04.03 09:56 |
|
SELECT sum( voting.rating ) AS total, documents.docid, documents.title FROM `voting` LEFT JOIN documents USING ( docid ) WHERE documents.razdel = 36 GROUP BY voting.docid ORDER BY total DESC LIMIT 10
Три бири и оркестъра да свири.
Заповядай на 19.04 на сбирката на "Буквите" да те почерпя
Българската литература
Е-журнал за нова българска литература
| |
Тема
|
Re: MySQL - избягване на вложен селект
[re: Ивaнyшka]
|
|
Автор |
Topбaлaн (любопитко) |
Публикувано | 08.04.03 10:16 |
|
Мерси!
чесно казано - не разбрах как заработих почерпката...
това, дето го написах го има в хелпа на my sql -
salle само трябва да погледне страницата, що изглежда така странно (то може и да е от моя браузер, ама кой знае...)
| |
Тема
|
Salle ако даде друга идея
[re: Topбaлaн]
|
|
Автор |
Ивaнyшka (3-ти царски син) |
Публикувано | 08.04.03 10:26 |
|
така написания синтактис работи само за docid за които има някакво гласуване.
Но за тези които няма нищо в voting, не излизат в селекта.
А това е проблем, не ми се въвеждат изкуствени нули...
Българската литература
Е-журнал за нова българска литература
| |
Тема
|
Re: Salle ако даде друга идея
[re: Ивaнyшka]
|
|
Автор |
Topбaлaн (любопитко) |
Публикувано | 08.04.03 11:19 |
|
SELECT ......IFNULL(docid, 0) AS docid......
виж дали това няма да свърши работа...
но по същество, за какво са ти тези, за които не е гласувано?
SELECT sum( votes.vote ) AS total, IFNULL( memberpics.pic_galery, 'няма я' ) AS galery
FROM `votes`
LEFT JOIN memberpics USING ( pic_id )
GROUP BY votes.pic_id
HAVING galery = 'няма я'
ORDER BY total DESC
LIMIT 10
е това си работи при мен....
Редактирано от Topбaлaн на 08.04.03 11:29.
| |
Тема
|
Re: MySQL - избягване на вложен селект
[re: Ивaнyшka]
|
|
Автор |
salle (минаващ) |
Публикувано | 08.04.03 12:20 |
|
documents(docid, title, razdel, ...)
съдържа документи с уникален docid
rating(ratid, docid, ...)
гласуване за всеки документ - общия рейтинг се постига със сумиране.
SELECT d.razdel, d.docid, SUM(r.ratid) AS Vote
FROM documents AS d LEFT JOIN rating AS r USING(docid)
GROUP BY d.razdel, d.docid
ORDER BY Vote DESC
LIMIT 10;
SELECT d.docid, SUM(r.ratid) AS Vote
FROM documents AS d LEFT JOIN rating AS r USING(docid)
WHERE d.razdel = 666
GROUP BY d.docid
ORDER BY Vote DESC
LIMIT 10;
| |
Тема
|
Re: MySQL - избягване на вложен селект
[re: salle]
|
|
Автор |
Ивaнyшka (3-ти царски син) |
Публикувано | 08.04.03 13:43 |
|
Който може, го може!
Salle твоят тръгна от раз.
Благодаря и на двамата
Българската литература
Е-журнал за нова българска литература
| |
|
|
|
|