|
|
|
| подскажите пожалуйста, как можно исправить мой запрос, чтобы было правильно:)
нужно чтобы выводилась таблица содержащая 4 поля:логин, количество правильных ответов по 1 базе данных, количество правильных ответов по второй базе данных, и итоговый результат по двум базам данных.
select distinct login, (select count(id_otv) from sessya where result='Верно') as itog, (select count(id_otv) from sessya where bd='1' and result='Верно') as bd1, (select count(id_otv) from sessya where bd='2' and result='Верно') as bd2 from sessya order by login | |
|
|
|
|
|
|
|
для: enodik
(23.04.2011 в 19:41)
| | А что сейчас не верно работает? Что выдает следующий запрос и что он должен выдавать на самом деле?
select
distinct login,
(select count(id_otv) from sessya where result='Верно') as itog,
(select count(id_otv) from sessya where bd='1' and result='Верно') as bd1,
(select count(id_otv) from sessya where bd='2' and result='Верно') as bd2
from sessya
order by login
|
| |
|
|
|
|
|
|
|
для: cheops
(23.04.2011 в 19:50)
| | сейчас выдает таблицу, в которой поле логин как бы не привязано к остальным полям | |
|
|
|
|
|
|
|
для: enodik
(23.04.2011 в 22:05)
| | Попробуйте следующий запрос
SELECT
sessya.login AS login,
bd1.total AS totalbd1,
bd2.total AS totalbd2,
(bd1.total + bd2.total) AS totalitog
FROM
sessya
LEFT JOIN
(SELECT login, COUNT(id_otv) AS total
FROM sessya
WHERE bd='1' AND
result='Верно'
GROUP BY login) AS bd1
USING(login)
(SELECT login, COUNT(id_otv) AS total
FROM sessya
WHERE bd='2' AND
result='Верно') AS bd2
USING(login)
ORDER BY sessya.login
|
| |
|
|
|
|
|
|
|
для: cheops
(23.04.2011 в 22:18)
| | #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT login, COUNT(id_otv) AS total FROM sessya WHERE bd='2' AND r' at line 15
выводится такая ошибка | |
|
|
|
|
|
|
|
для: enodik
(23.04.2011 в 23:09)
| | Исправьте запрос следующим образом
SELECT
sessya.login AS login,
bd1.total AS totalbd1,
bd2.total AS totalbd2,
(bd1.total + bd2.total) AS totalitog
FROM
sessya
LEFT JOIN
(SELECT login, COUNT(id_otv) AS total
FROM sessya
WHERE bd='1' AND
result='Верно'
GROUP BY login) AS bd1
USING(login)
LEFT JOIN
(SELECT login, COUNT(id_otv) AS total
FROM sessya
WHERE bd='2' AND
result='Верно') AS bd2
USING(login)
ORDER BY sessya.login
|
| |
|
|
|
|
|
|
|
для: cheops
(23.04.2011 в 23:33)
| | так работает, носейчас если нет верных ответов он выводи NULL, а как сделать так чтобы выводился 0? | |
|
|
|
|
|
|
|
для: enodik
(23.04.2011 в 23:46)
| | Можно поступить следующим образом
SELECT
sessya.login AS login,
IFNULL(bd1.total, 0) AS totalbd1,
IFNULL(bd2.total, 0) AS totalbd2,
(IFNULL(bd1.total, 0) + IFNULL(bd2.total, 0)) AS totalitog
FROM
sessya
LEFT JOIN
(SELECT login, COUNT(id_otv) AS total
FROM sessya
WHERE bd='1' AND
result='Верно'
GROUP BY login) AS bd1
USING(login)
LEFT JOIN
(SELECT login, COUNT(id_otv) AS total
FROM sessya
WHERE bd='2' AND
result='Верно') AS bd2
USING(login)
ORDER BY sessya.login
|
| |
|
|
|
|
|
|
|
для: cheops
(24.04.2011 в 00:03)
| | спасибо:) | |
|
|
|