powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
14 сообщений из 14, страница 1 из 1
Помогите с запросом
    #40067999
andryus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две талибцы:
1. TABLE1 поля
-id
-idchet
-fio
2. TABLE2 поля
-idtable1
-data1
-data2

ЗНАЧЕНИЯ
TABLE1:
id=1
idchet=123
fio=Иванов Иван Иванович
id=2
idchet=123
fio=Петров Петр Петрович
id=3
idchet=124
fio=Сидоров Петр Петрович


TABLE2:
idtable1=1
data1=01.05.2021
data2=02.05.2021
idtable1=1
data1=03.05.2021
data2=04.05.2021
idtable1=1
data1=04.05.2021
data2=05.05.2021

idtable1=2
data1=01.06.2021
data2=02.06.2021
idtable1=2
data1=03.06.2021
data2=04.06.2021
idtable1=2
data1=04.06.2021
data2=05.06.2021

УСЛОВИЕ:
idchet=123
TABLE1.id=TABLE2.idtable1

ЗАДАЧА
Выбрать минимальную data1 и максимальную data2 у Иванов Иван Иванович (id=1) и Петров Петр Петрович (id=2)

PS Сидоров Петр Петрович (id=3) jотпадает так как не срабатывает условие idchet=123

Большое спасибо за помощь в скрипте.
...
Рейтинг: 0 / 0
Помогите с запросом
    #40068018
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Приводите таблицы в нормальный, читабельный вид. Сложно?

TABLE1:
id idchet fio1 123 Иванов Иван Иванович2 123 Петров Петр Петрович3 124 Сидоров Петр Петрович

TABLE2:
idtable1 data1 data21 01.05.2021 02.05.20211 03.05.2021 04.05.20211 04.05.2021 05.05.20212 01.06.2021 02.06.20212 03.06.2021 04.06.20212 04.06.2021 05.06.2021

2. Описывайте типы данных в таблице. Сложно? Будем считать, что у вас timestamp.

3. Ваше "УСЛОВИЕ" как-то противоречит "ЗАДАНИЮ". Вам "idchet=123" или "id=1 и id=2"? Или "idchet=123 и id=1 и id=2"? Формулируйте нормально.

Ну вот как-то так:
Код: sql
1.
2.
3.
4.
SELECT `t1`.`id`, `t1`.`idchet`, `t1`.`fio`, MIN(`t2`.`data1`) AS `mindata`, MAX(`t2`.`data2`) AS `maxdata`
FROM `table1` AS `t1`
LEFT JOIN `table2` AS `t2` ON `t1`.`id`=`t2`.`idtable1`
WHERE `t1`.`idchet`='123' GROUP BY `t1`.`id`



Результат:
id idchet fio mindata maxdata 1123Иванов Иван Иванович2021-05-01 00:00:002021-05-05 00:00:002123Петров Петр Петрович2021-06-01 00:00:002021-06-05 00:00:00
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069141
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забавно. "Новичок" за 1 год так и не научился ничему. Только темы создаёт чтобы за него всё делали
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069236
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в данном случае получим JOIN, не LEFT JOIN
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069277
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,
из-за MIN(), MAX() ?
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069399
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman,

из-за WHERE
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069421
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,
чушь какая-то. С чего это вдруг ? WHERE - условие выборки с первой таблицы
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069452
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
чушь какая-то. С чего это вдруг ? WHERE - условие выборки с первой таблицы
Не понял - лучше переспроси.

TABLE1.id=TABLE2.idtable1 , помещённое во WHERE, немедленно превращает LEFT JOIN table2 в неподходящее INNER JOIN table2 .
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069520
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
FreeAdman
чушь какая-то. С чего это вдруг ? WHERE - условие выборки с первой таблицы
Не понял - лучше переспроси.

TABLE1.id=TABLE2.idtable1 , помещённое во WHERE, немедленно превращает LEFT JOIN table2 в неподходящее INNER JOIN table2 .


А где вы увидели в "WHERE `t1`.`idchet`='123'" — TABLE1.id=TABLE2.idtable1 ?
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069525
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman,

на пальцах:
LEFT JOIN - создан для "показа" всей "левой таблицы" с приклеенными элементами "правой таблицы" (там где они есть, где нет - NULL).
в ON - условиЯ соединения правой таблицы, это условие не "подрезает" левую таблицу ни в коем случае.

WHERE работает (условно) в самом конце, подрезает левую таблицу по условию `t1`.`idchet`='123'
в рез-те мы не увидим записи с idchet=124, получаем то же самое что и с INNER JOIN

Запрос с LEFT JOIN + WHERE даст тот же результат, но даже по условию задачи он НЕ НУЖЕН

можно поиграться здесь -> https://dbfiddle.uk/?rdbms=mysql_8.0 если под рукой нет MySQL.
посмотреть что даст в результате запрос с WHERE `t1`.`idchet`='123' и без него, с INNER и LEFT JOIN.
На бумаге иногда это затруднительно увидеть
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069536
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
А где вы увидели в "WHERE `t1`.`idchet`='123'" — TABLE1.id=TABLE2.idtable1 ?
Да в самом первом сообщении:
andryus
УСЛОВИЕ:
idchet=123
TABLE1.id=TABLE2.idtable1
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069545
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
FreeAdman
А где вы увидели в "WHERE `t1`.`idchet`='123'" — TABLE1.id=TABLE2.idtable1 ?
Да в самом первом сообщении:
andryus
УСЛОВИЕ:
idchet=123
TABLE1.id=TABLE2.idtable1

Голову включите, уважаемый. Автор сам не понимает что ему нужно и фантазирует условия.
Я в своём сообщении написал, что его ЗАДАЧА противоречит УСЛОВИЮ. Это если культурно объяснить
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069548
FreeAdman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,
ну, можно и INNER. Только если даты в БД не будет, INNER ничего не вернёт.

А вообще, пусть автор разбирается
...
Рейтинг: 0 / 0
Помогите с запросом
    #40069589
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FreeAdman
Автор сам не понимает что ему нужно и фантазирует условия.
Я в своём сообщении написал, что его ЗАДАЧА противоречит УСЛОВИЮ.
Упс... а мне чёта показалось, что это ты автор... тады сорри.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]