Запрос из 2 таблиц - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Thu, 25 Apr 2024 02:46:38 +0300 <strong>Башка</strong>, я там немного ошибся, группировка сработала потому что все даты одинаковые<br> правильнее все же та<br> <pre class="prettyprint">SELECT s.name, ym, CAST(IFNULL(AVG(g.grade), &#039;---&#039;) AS CHAR(3)) FROM student s LEFT JOIN (select DATE_FORMAT(date, &#039;%Y-%m&#039;) ym from grade group by ym) d ON 1 = 1 LEFT JOIN grade g ON s.id = g.student_id and DATE_FORMAT(g.`date`, &#039;%Y-%m&#039;) = ym GROUP BY s.name, ym;</pre> https://visavi.net/topics/43056/690263 Запрос из 2 таблиц Вантуз-мен Fri, 01 Jul 2016 13:24:01 +0300 Сообщения https://visavi.net/topics/43056/690263 <strong>Башка</strong>, ага спасибо вот так работает<br> <pre class="prettyprint"> SELECT student.name, DATE_FORMAT(dates.date, &#039;%Y-%m&#039;) ym, CAST(IFNULL(AVG(grade.grade), &#039;---&#039;) AS CHAR(3)) FROM student LEFT JOIN (select date from grade group by date) dates ON 1 = 1 LEFT JOIN grade ON student.id = grade.student_id and DATE_FORMAT(grade.`date`, &#039;%Y-%m&#039;) = DATE_FORMAT(dates.`date`, &#039;%Y-%m&#039;) GROUP BY student.name, dates.date; </pre> https://visavi.net/topics/43056/690259 Запрос из 2 таблиц Вантуз-мен Fri, 01 Jul 2016 09:27:17 +0300 Сообщения https://visavi.net/topics/43056/690259 <strong>Vantuz</strong>, необходимо сформировать еще одно множетсво:<br> <pre class="prettyprint"> select student.name, DATE_FORMAT(dates.date, &#039;%Y-%m&#039;) ym, CAST(IFNULL(AVG(grade.grade), &#039;---&#039;) AS CHAR(3)) from student left join (select date from grade group by date) as dates on 1 = 1 LEFT JOIN grade ON student.id = grade.student_id group by student.name, dates.date </pre> <br> <em><span style="font-size:x-small">Добавлено через 09:27 сек.</span></em><br> Пример нарно нерабочий, но может направит на верный путь. https://visavi.net/topics/43056/690257 Запрос из 2 таблиц Артур Fri, 01 Jul 2016 03:28:50 +0300 Сообщения https://visavi.net/topics/43056/690257 Он выводит так<br> <pre class="prettyprint">&#039;Вася&#039;, &#039;2013-09&#039;, &#039;4.5&#039; &#039;Вася&#039;, &#039;2013-10&#039;, &#039;3&#039; &#039;Коля&#039;, &#039;2013-09&#039;, &#039;4&#039; &#039;Коля&#039;, &#039;2013-10&#039;, &#039;3&#039; &#039;Петя&#039;, &#039;2013-09&#039;, &#039;3.5&#039; &#039;Света&#039;, NULL, &#039;---&#039; </pre> https://visavi.net/topics/43056/690255 Запрос из 2 таблиц Вантуз-мен Fri, 01 Jul 2016 01:33:38 +0300 Сообщения https://visavi.net/topics/43056/690255 Есть 2 таблицы<br> <pre class="prettyprint"> CREATE TABLE student ( id int(10) NOT NULL AUTO_INCREMENT, name varchar(50) BINARY DEFAULT NULL, status tinyint(4) DEFAULT NULL, PRIMARY KEY (id) ); INSERT INTO `student` (`name`, `status`) VALUES (&#039;Вася&#039;, &#039;1&#039;) INSERT INTO `student` (`name`, `status`) VALUES (&#039;Петя&#039;, &#039;1&#039;); INSERT INTO `student` (`name`, `status`) VALUES (&#039;Коля&#039;, &#039;1&#039;); INSERT INTO `student` (`name`, `status`) VALUES (&#039;Света&#039;, &#039;1&#039;); CREATE TABLE grade ( id int(11) NOT NULL AUTO_INCREMENT, student_id int(11) NOT NULL, date datetime NOT NULL, grade enum(&#039;1&#039;,&#039;2&#039;,&#039;3&#039;,&#039;4&#039;,&#039;5&#039;) NOT NULL, PRIMARY KEY (id) ); INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES (&#039;1&#039;, &#039;2013-09-04 10&#58;10&#58;10&#039;, &#039;5&#039;); INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES (&#039;1&#039;, &#039;2013-09-04 10&#58;10&#58;10&#039;, &#039;4&#039;); INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES (&#039;2&#039;, &#039;2013-09-04 10&#58;10&#58;10&#039;, &#039;3&#039;); INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES (&#039;2&#039;, &#039;2013-09-04 10&#58;10&#58;10&#039;, &#039;4&#039;); INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES (&#039;1&#039;, &#039;2013-10-04 10&#58;10&#58;10&#039;, &#039;3&#039;); INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES (&#039;3&#039;, &#039;2013-09-04 10&#58;10&#58;10&#039;, &#039;5&#039;); INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES (&#039;3&#039;, &#039;2013-10-04 10&#58;10&#58;10&#039;, &#039;3&#039;); INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES (&#039;3&#039;, &#039;2013-09-04 10&#58;10&#58;10&#039;, &#039;3&#039;); </pre> <br> Должно получиться что-то вроде этого<br> <pre class="prettyprint"> &#039;Вася&#039;, &#039;2013-09&#039;, &#039;4.5&#039; &#039;Вася&#039;, &#039;2013-10&#039;, &#039;3&#039; &#039;Коля&#039;, &#039;2013-09&#039;, &#039;4&#039; &#039;Коля&#039;, &#039;2013-10&#039;, &#039;3&#039; &#039;Петя&#039;, &#039;2013-09&#039;, &#039;3.5&#039; &#039;Петя&#039;, &#039;2013-10&#039;, &#039;---&#039; &#039;Света&#039;, &#039;2013-09&#039;, &#039;---&#039; &#039;Света&#039;, &#039;2013-10&#039;, &#039;---&#039; </pre> <br> Как видно из вывода светы нет связи вообще, а у пети только за сентябрь есть<br> но нужно вывести за оба месяца<br> <br> <em><span style="font-size:x-small">Добавлено через 01:56 сек.</span></em><br> Я сделал подобный запрос, но не знаю как вывести все месяцы даже если нет связи<br> <pre class="prettyprint">SELECT s.name, DATE_FORMAT(g.date, &#039;%Y-%m&#039;) ym, CAST(IFNULL(AVG(g.grade), &#039;---&#039;) AS CHAR(3)) FROM student s LEFT JOIN grade g ON s.id = g.student_id GROUP BY s.name, ym;</pre> https://visavi.net/topics/43056/690254 Запрос из 2 таблиц Вантуз-мен Fri, 01 Jul 2016 01:30:39 +0300 Сообщения https://visavi.net/topics/43056/690254