|
Модераторы: skyboy |
|
CaptainNemo |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 283 Регистрация: 5.6.2008 Где: White Russia, Min sk Репутация: нет Всего: 9 |
Подскажите, у меня вот запрос работает корректно за исключением последней строчки
Мне нужно в одном запросе получить данные из общей таблицы comm_manufacturer (список производителей) Первый раз я запрашиваю производителя трактора
А второй раз из этой же таблицы должен получить производителя двигателя этого трактора
Но если я прописываю сразу два этих условия, то ничего не возвращается. Спасибо) Это сообщение отредактировал(а) CaptainNemo - 17.1.2017, 14:03 |
||||||
|
|||||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
Раздел называется "Составление SQL-запросов". Так что очистите свой код от PHP-обвязки и замените PHP-подсветку на SQL.
Было бы очень странно, если в таблице нашлась бы запись, у которой comm_manufacturer.id_comm_manufacturer равно одновременно и trac_engine.id_engine_manufacture, и trac.id_comm_manufacturer... Структуру таблиц с подробными пояснениями, особенно в части связей (а ненужные для дела поля - скрыть или вообще поудалять), а также желаемый результат (с указанием. из какой таблицы какое поле) в студию. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
CaptainNemo |
|
||||||||
Опытный Профиль Группа: Участник Сообщений: 283 Регистрация: 5.6.2008 Где: White Russia, Min sk Репутация: нет Всего: 9 |
Я просто хотел узнать, можно ли одним запросом выудить из таблицы comm_manufacturer данные, так, что бы в ответе (массиве) отображалось сначала запись, соответствующая
а вторым элементом массива запись, для которой
Такой номер у меня проходит, только когда обращаюсь к группе таблиц, которые связаны между собой по ID
А тут, нужно к одной и той же таблице два раза обратиться в одном запросе, возможно ли это? Это сообщение отредактировал(а) CaptainNemo - 17.1.2017, 14:27 |
||||||||
|
|||||||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
Вопрос непонятен. Не получается словами - попробуйте минимальным примером показать, что нужно, что ли... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
CaptainNemo |
|
||||||||
Опытный Профиль Группа: Участник Сообщений: 283 Регистрация: 5.6.2008 Где: White Russia, Min sk Репутация: нет Всего: 9 |
Хорошо, попробую. Есть много таблиц в phpmyadmin. Эти таблицы связаны через ID. На php у меня написан обработчик, я создаю соединение и отправляю запрос:
В этом запросе только одна внешняя переменная '$firstElem' - индекс элемента таблицы trac. Мне в ответ приходит инфа и из других таблиц trac, trac_tag, trac_engine, comm_manufacturer, trac_tires и эта инфа соответствует переменной '$firstElem'. Ответ приходит в виде вот такого массива
Из этого массива я собираю сводную таблицу, в которой отображается вся инфа по объекту с индексом '$firstElem'. Однако для полноты картины, хотелось бы еще подтянуть в этот массив (приведенный выше) еще одну запись, которая соответствовала бы условию
Это сообщение отредактировал(а) CaptainNemo - 17.1.2017, 15:34 |
||||||||
|
|||||||||
Akina |
|
|||
Советчик Профиль Группа: Модератор Сообщений: 20570 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 453 |
Не надо рассказывать, что сделано. Всё равно надо делать "с нуля".
Покажите пример - таблицы с исходными данными и желаемый результат запроса НА ЭТИХ ДАННЫХ. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
||||||||||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Akina, зачем мучишь хлопца. Ясно же об что он споткнулся. CaptainNemo, ты можешь использовать в соединении одну и ту же таблицу сколь угодно раз. Для того, чтобы при этом не происходил конфликт имен следует использовать псевдонимы.
Не зная стоящей перед вами задачи, не могу понять, умышленно ли вы используете внутреннее соединение, потому хочется обратить ваше внимание на то, что если хотя бы одно из полей, по которым вы выполняете соединения окажется не заполненным, ваша выборка будет возвращать пустой результат не смотря на то, что все остальные поля заполнены. Если для вашей задачи такое поведение не подходяще, рекомендую обратить внимание на внешнее соединение (конструкция left join) -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||||||||
|
|||||||||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: 1 Всего: 4 |
Конечно в данном случае можно использовать конструкцию LEFT JOIN или UNION. Но сразу предупреждаю что сам формат таблиц и связи между таблицами приведет о очень долгой обработке запроса или таймауту. Я рекомендую вам написать подробнее какие поля в таблице их назначение и как они связаны. Тогда можно будет подсказать как это делать правильно.
|
|||
|
||||
CaptainNemo |
|
|||
Опытный Профиль Группа: Участник Сообщений: 283 Регистрация: 5.6.2008 Где: White Russia, Min sk Репутация: нет Всего: 9 |
Zloxa,
Garmahis, спасибо, теперь все работает) |
|||
|
||||
Zloxa |
|
|||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Скажите, пожалуйста, на чем зиждиться это утверждение? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
Garmahis |
|
|||
Опытный Профиль Группа: Участник Сообщений: 254 Регистрация: 23.12.2004 Репутация: 1 Всего: 4 |
Таблица trac по сути набор различных id. Будет очень трудно прописать адекватные индексы.
|
|||
|
||||
Zloxa |
|
||||
Чо? Профиль Группа: Завсегдатай Сообщений: 3470 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Все выглядит как обычная нормализация (возможно очень избыточная). Доступ к trac осуществляется, судя по всему, по первичному ключу. Справочники так же, по всей видимости, подтягиваются по первичным ключам. Другие индексы тут не нужны. По всей видимости вы имели негативный опыт чего-то другого, но на это похожее, и теперь на молоко дуете. Я даже осмелюсь предположить что вам раньше приходилось сталкиватсься с EAV или ее частностями. Здесь - совсем не то. Добавлено @ 20:56 смущает, пожалуй только предикат
выглядит так, будто может быть получено две строки результата. если оба поля заполнены и различаются, что, скорее всего, не требуется. Это сообщение отредактировал(а) Zloxa - 18.1.2017, 21:01 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
||||
|
|||||
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |