powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
8 сообщений из 8, страница 1 из 1
Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
    #39616465
Jekart88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть запрос:
Код: sql
1.
2.
3.
SELECT (`name`) as `key` FROM `car_model` WHERE `id_car_mark` = 157
UNION
SELECT (`name_rus`) as `key` FROM `car_model` WHERE `id_car_mark` = 157



И запрос с другой таблицы:
Код: sql
1.
SELECT `id_car_model` FROM `car_generation` WHERE `year_begin` > 1985



А теперь вопрос уважаемые знатоки: как эти два запроса можно объединить?
так чтобы первый запрос выбирал только те значения которые подходят под условия второго запрос.
Необходимо выбрать `марку авто` из таблицы `car_model` ГДЕ `id_car_mark` = 157 а также не старше 1985 года по второй таблице `id_car_model`
Код: sql
1.
WHERE `year_begin` > 1985



запутано, ну надеюсь понятно, заранее огромное спасибо.

Связь между таблицами по значению "id_car_model"

Структура таблици "car_model"
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE `car_model` (
  `id_car_model` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `id_car_mark` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `date_create` int(10) unsigned DEFAULT NULL,
  `date_update` int(10) unsigned DEFAULT NULL,
  `id_car_type` int(8) NOT NULL,
  `name_rus` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id_car_model`),
  KEY `name` (`name`),
  KEY `id_car_mark` (`id_car_mark`),
  KEY `id_car_type` (`id_car_type`)
) ENGINE=MyISAM AUTO_INCREMENT=22476 DEFAULT CHARSET=utf8 COMMENT='Модели автомобилей';



Структура таблици "car_generation"
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE TABLE `car_generation` (
  `id_car_generation` int(8) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `id_car_model` int(8) NOT NULL,
  `year_begin` varchar(255) DEFAULT NULL,
  `year_end` varchar(255) DEFAULT NULL,
  `date_create` int(10) unsigned NOT NULL,
  `date_update` int(10) unsigned DEFAULT NULL,
  `id_car_type` int(8) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id_car_generation`),
  KEY `id_car_model` (`id_car_model`),
  KEY `id_car_type` (`id_car_type`)
) ENGINE=MyISAM AUTO_INCREMENT=107936 DEFAULT CHARSET=utf8 COMMENT='Поколения Моделей';
...
Рейтинг: 0 / 0
Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
    #39616474
Jekart88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jekart88,
Попытался сам составить запрос:
Код: sql
1.
SELECT a.name, a.name_rus, a.id_car_mark FROM `car_model` as a, `car_generation` as b WHERE a.id_car_mark = 10 OR a.id_car_model = b.id_car_model;



Получаю повторения выдачи
...
Рейтинг: 0 / 0
Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
    #39616477
Jekart88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jekart88,
И так пробовал:

Код: sql
1.
SELECT a.name, a.name_rus, a.id_car_mark FROM `car_model` as a, `car_generation` as b WHERE a.id_car_mark = 10 OR b.year_begin > 1985;
...
Рейтинг: 0 / 0
Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
    #39616485
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оператор JOIN умеете использовать? именно им объединяются таблицы.
...
Рейтинг: 0 / 0
Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
    #39616493
Jekart88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лебедин,

нет, не умею ((

пробовал так:
Код: sql
1.
SELECT a.name, a.name_rus, a.id_car_mark, b.year_begin FROM `car_model` as a, `car_generation` as b WHERE a.id_car_model = b.id_car_model GROUP BY a.name;



тоже не то
...
Рейтинг: 0 / 0
Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
    #39616502
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы сделал примерно так:
Код: plsql
1.
2.
3.
4.
SELECT DISTINCT a.name, a.name_rus, a.id_car_mark, b.year_begin
 FROM `car_model`  a
JOIN `car_generation`  b ON a.id_car_model = b.id_car_model
 WHERE a.id_car_mark = 10  and b.year_begin > 1985
...
Рейтинг: 0 / 0
Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
    #39616517
Jekart88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лебедкин,
Спасибо огромное! Все работает как нужно.
Но столкнулся еще с одной проблемой, получаю повторение значений так как у одной марки в таблице car_generation может быть несколько значений года.
Имеем это:
A1 А1 10 2014
A1 А1 10 2010
A3 А3 10 2012
A3 А3 10 2003
A3 А3 10 2008
A3 А3 10 2004
A3 А3 10 2016
A4 А4 10 2011
A4 А4 10 2007
A4 А4 10 2004
A4 А4 10 2015
A5 А5 10 2011
A5 А5 10 2007

А нужно так:
A1 А1 10 2014
A3 А3 10 2012
A4 А4 10 2011
A5 А5 10 2011
...
Рейтинг: 0 / 0
Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
    #39616529
Лебедкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самое простое, убрать поле года.
Код: plsql
1.
2.
3.
4.
SELECT DISTINCT a.name, a.name_rus, a.id_car_mark
FROM `car_model`  a
JOIN `car_generation`  b ON a.id_car_model = b.id_car_model
WHERE a.id_car_mark = 10  and b.year_begin > 1985



если год обязательно нужен, можно DISTINCT заменить на GROUP BY.
Код: plsql
1.
2.
3.
4.
5.
SELECT a.name, a.name_rus, a.id_car_mark, b.year_begin
FROM `car_model`  a
JOIN `car_generation`  b ON a.id_car_model = b.id_car_model
WHERE a.id_car_mark = 10  and b.year_begin > 1985
GROUP BY a.id_car_model
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите пожалуйста. Не могу составить запрос с фильтрами из двух таблиц.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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