Запрос из 2 таблиц - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - 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), '---') AS CHAR(3))
FROM student s
LEFT JOIN (select DATE_FORMAT(date, '%Y-%m') 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`, '%Y-%m') = 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, '%Y-%m') ym, CAST(IFNULL(AVG(grade.grade), '---') 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`, '%Y-%m') = DATE_FORMAT(dates.`date`, '%Y-%m')
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, '%Y-%m') ym, CAST(IFNULL(AVG(grade.grade), '---') 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">'Вася', '2013-09', '4.5'
'Вася', '2013-10', '3'
'Коля', '2013-09', '4'
'Коля', '2013-10', '3'
'Петя', '2013-09', '3.5'
'Света', NULL, '---'
</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 ('Вася', '1')
INSERT INTO `student` (`name`, `status`) VALUES ('Петя', '1');
INSERT INTO `student` (`name`, `status`) VALUES ('Коля', '1');
INSERT INTO `student` (`name`, `status`) VALUES ('Света', '1');
CREATE TABLE grade (
id int(11) NOT NULL AUTO_INCREMENT,
student_id int(11) NOT NULL,
date datetime NOT NULL,
grade enum('1','2','3','4','5') NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES ('1', '2013-09-04 10:10:10', '5');
INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES ('1', '2013-09-04 10:10:10', '4');
INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES ('2', '2013-09-04 10:10:10', '3');
INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES ('2', '2013-09-04 10:10:10', '4');
INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES ('1', '2013-10-04 10:10:10', '3');
INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES ('3', '2013-09-04 10:10:10', '5');
INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES ('3', '2013-10-04 10:10:10', '3');
INSERT INTO `grade` (`student_id`, `date`, `grade`) VALUES ('3', '2013-09-04 10:10:10', '3');
</pre>
<br>
Должно получиться что-то вроде этого<br>
<pre class="prettyprint">
'Вася', '2013-09', '4.5'
'Вася', '2013-10', '3'
'Коля', '2013-09', '4'
'Коля', '2013-10', '3'
'Петя', '2013-09', '3.5'
'Петя', '2013-10', '---'
'Света', '2013-09', '---'
'Света', '2013-10', '---'
</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, '%Y-%m') ym, CAST(IFNULL(AVG(g.grade), '---') 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