Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение данных 
V
    Опции темы
s1lver
  Дата 27.7.2014, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Доброго времени суток!

Есть таблица в которой записи вида

id number nomer1 nomer2 nomer3


Вторая таблица с записисями вида

id nomer tab3_id

Третья таблица с записями вида

tab3_id name_id


Четвертая таблица с записями вида

name_id name


С помощью JOIN можно вывести данные типа 

nomer1 name

В принципе достаточно правильно. Но как можно выбрать записи, чтобы можно было вывести списком сопоставления nomer2 с name и nomer3 с name. (nomer3 может отсутствовать).  На данный момент сопоставление идет номера 2,3 с name номера 1. smile 

Предполагаю, что одним SQL-запросом тут не обойтись. Прошу помочь разобраться в этом вопросе.
 


Это сообщение отредактировал(а) s1lver - 28.7.2014, 12:04


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Zorak
Дата 28.7.2014, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



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


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
s1lver
Дата 28.7.2014, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Хм, текущий запрос 
Код

SELECT 'nomer1, nomer2, nomer3, name' 
FROM table1
JOIN table2 ON table1.number = table2.nomer
JOIN table3 ON table2.id = table3.name_id
JOIN table4 ON table3.id = table4.name_id
WHERE table1.id = :id, (':id' = $id)


Возвращает такую структуру
array(1) {
  [0]=>
  array(4) {
    ["nomer1"]=>
    string(13) "3232323444444"
    ["nomer2"]=>
    string(13) "8766454453443"
    ["nomer3"]=>
    string(1) "0"
    ["name"]=>
    string(8) "Иван"
  }
}

Т.е, нет данных по другим номерам. Включается только данные по основному номеру.

Это сообщение отредактировал(а) s1lver - 28.7.2014, 12:12


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Aliance
Дата 29.7.2014, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Зачем вопрос про SQL писать в раздел по PHP? Переношу тему.
PM MAIL WWW ICQ Skype   Вверх
Akina
Дата 29.7.2014, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Избавьтесь от JOIN и перепишите запрос на декарт с отбором, объединив альтернативные условия через OR и грамотно расставив скобки.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
s1lver
Дата 29.7.2014, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Цитата(Aliance @ 29.7.2014,  09:19)
Зачем вопрос про SQL писать в раздел по PHP? Переношу тему.

Потому что, я не был уверен что это можно сделать одним запросом


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
s1lver
Дата 29.7.2014, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 14.12.2007
Где: Россия

Репутация: нет
Всего: нет



Вопрос, таки, решен одним запросом к БД!  smile 


--------------------
Я собрался жить вечно - пока все идет нормально!
PM MAIL ICQ   Вверх
Aliance
Дата 29.7.2014, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: нет
Всего: 137



Цитата(s1lver @  29.7.2014,  13:08 Найти цитируемый пост)
Потому что, я не был уверен что это можно сделать одним запросом 

тем ни менее, в вопросе не строчки про серверный код в целом, и PHP в частности. В таких случаях все же нужно создавать темы здесь, а далее если SQL решение не найдено, дублировать тему с отсылкой сюда в серверных тредах.

Цитата(s1lver @  29.7.2014,  14:11 Найти цитируемый пост)
Вопрос, таки, решен одним запросом к БД!  

Кроме того было бы хорошо поделится решением в теме, мало ли кому оно пригодится.
PM MAIL WWW ICQ Skype   Вверх
Akina
Дата 30.7.2014, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Aliance @  29.7.2014,  17:07 Найти цитируемый пост)
было бы хорошо поделится решением 

Не вижу смысла. Решение, во-первых, тривиальное, во-вторых, структура не нормализована, потому решение не представляет даже теоретического интереса.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.