powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не получается составить запрос на 4 таблицы
7 сообщений из 7, страница 1 из 1
Не получается составить запрос на 4 таблицы
    #39004578
bot2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Помогите пожалуйста составить запрос или хотябы подскажите в какую строну идти.

Есть 4 таблицы смотрите на рисунке приложенным к теме.

Посмотрев на второй рисунок поймёте что в них происходит. Если кратко, то имеются продукты и относящиеся к ним поля(количество процессоров, частота,..) со значениями.

Но этот мой запрос не верный, т.к. я не могу добавить условия на значения полей, это видно из третьей части рисунка.

Подскажите что делать? Спасибо.
...
Рейтинг: 0 / 0
Не получается составить запрос на 4 таблицы
    #39004588
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последний AND заменить на OR.
...
Рейтинг: 0 / 0
Не получается составить запрос на 4 таблицы
    #39004604
bot2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, точно не тот путь
...
Рейтинг: 0 / 0
Не получается составить запрос на 4 таблицы
    #39004607
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bot2точно не тот путьТот путь - не надеяться, что мы будем лечить по фотографии. Мы не телепаты, и можем только попробовать потыкать пальцем.

Дайте вместо своих маловменяемых картинок полные DDL всех таблиц, скрипты их тестового наполнения, ожидаемый на именно этих данных результат и подробное объяснение, почему именно так, а не иначе. Тогда и будет предмет для разговора.
...
Рейтинг: 0 / 0
Не получается составить запрос на 4 таблицы
    #39004636
bot2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
DDL
автор-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1
-- Время создания: Июл 10 2015 г., 16:31
-- Версия сервера: 5.5.25
-- Версия PHP: 5.3.13

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- База данных: `test`
--

-- --------------------------------------------------------

--
-- Структура таблицы `element`
--

CREATE TABLE IF NOT EXISTS `element` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`published` int(1) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Дамп данных таблицы `element`
--

INSERT INTO `element` (`id`, `title`, `published`) VALUES
(1, 'iphone 7', 1),
(2, 'samsung 10', 1);

-- --------------------------------------------------------

--
-- Структура таблицы `element_field_value`
--

CREATE TABLE IF NOT EXISTS `element_field_value` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_element` int(11) DEFAULT NULL,
`id_field` int(11) DEFAULT NULL,
`id_value` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- Дамп данных таблицы `element_field_value`
--

INSERT INTO `element_field_value` (`id`, `id_element`, `id_field`, `id_value`) VALUES
(1, 1, 1, 1),
(2, 1, 2, 2),
(3, 2, 1, 3),
(4, 2, 2, 4);

-- --------------------------------------------------------

--
-- Структура таблицы `field`
--

CREATE TABLE IF NOT EXISTS `field` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Дамп данных таблицы `field`
--

INSERT INTO `field` (`id`, `title`) VALUES
(1, 'Количество процессоров'),
(2, 'Частота процессора');

-- --------------------------------------------------------

--
-- Структура таблицы `value`
--

CREATE TABLE IF NOT EXISTS `value` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- Дамп данных таблицы `value`
--

INSERT INTO `value` (`id`, `value`) VALUES
(1, 4),
(2, 1800),
(3, 2),
(4, 1700);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


Запрос
авторSELECT *
FROM `element` e
JOIN `element_field_value` efv ON e.id = efv.id_element
JOIN `field` f ON f.id = efv.id_field
JOIN `value` v ON v.id = efv.id_value
WHERE e.published=1 AND ( (f.id=1 AND v.value>3) AND (f.id=2 AND v.value>1400) )

Нужно выбрать все товары у которых поле с f.id=1 и v.value>3, а также у этого же товара есть поле с f.id=2 и v.value>1400
(f.id=1 AND v.value>3) AND (f.id=2 AND v.value>1400)

Но, как я могу полагать, запрос у меня изначально плохо составлен, поэтому и прошу помощи.
...
Рейтинг: 0 / 0
Не получается составить запрос на 4 таблицы
    #39004644
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaПоследний AND заменить на OR.и добавить group by с having-ом, ну и звёздочку убрать
...почему все думают, что их задача - единственная в своём роде?
17385028
...
Рейтинг: 0 / 0
Не получается составить запрос на 4 таблицы
    #39004648
bot2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina и tanglir спасибо за потраченное время, всё получилось.
Теперь буду пытаться понять как это всё работает.
Ещё раз спасибо.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не получается составить запрос на 4 таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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