|
|
|
Не получается составить запрос на 4 таблицы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Помогите пожалуйста составить запрос или хотябы подскажите в какую строну идти. Есть 4 таблицы смотрите на рисунке приложенным к теме. Посмотрев на второй рисунок поймёте что в них происходит. Если кратко, то имеются продукты и относящиеся к ним поля(количество процессоров, частота,..) со значениями. Но этот мой запрос не верный, т.к. я не могу добавить условия на значения полей, это видно из третьей части рисунка. Подскажите что делать? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2015, 15:54:44 |
|
||
|
Не получается составить запрос на 4 таблицы
|
|||
|---|---|---|---|
|
#18+
Последний AND заменить на OR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2015, 16:09:46 |
|
||
|
Не получается составить запрос на 4 таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, точно не тот путь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2015, 16:21:19 |
|
||
|
Не получается составить запрос на 4 таблицы
|
|||
|---|---|---|---|
|
#18+
bot2точно не тот путьТот путь - не надеяться, что мы будем лечить по фотографии. Мы не телепаты, и можем только попробовать потыкать пальцем. Дайте вместо своих маловменяемых картинок полные DDL всех таблиц, скрипты их тестового наполнения, ожидаемый на именно этих данных результат и подробное объяснение, почему именно так, а не иначе. Тогда и будет предмет для разговора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2015, 16:24:06 |
|
||
|
Не получается составить запрос на 4 таблицы
|
|||
|---|---|---|---|
|
#18+
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) Но, как я могу полагать, запрос у меня изначально плохо составлен, поэтому и прошу помощи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2015, 16:55:55 |
|
||
|
Не получается составить запрос на 4 таблицы
|
|||
|---|---|---|---|
|
#18+
AkinaПоследний AND заменить на OR.и добавить group by с having-ом, ну и звёздочку убрать ...почему все думают, что их задача - единственная в своём роде? 17385028 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2015, 17:02:23 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39004588&tid=1832961]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 320ms |

| 0 / 0 |
