Форум программистов, компьютерный форум, киберфорум
PostgreSQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
2 / 2 / 2
Регистрация: 02.07.2012
Сообщений: 38

Выбор данных из нескольких таблиц

10.03.2016, 20:47. Показов 2104. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеются 2 таблицы:

SQL
1
2
3
4
5
6
7
8
9
10
CREATE TABLE IF NOT EXISTS notes(                   /* 1 */
    id SERIAL PRIMARY KEY UNIQUE,                       /* номер записи */
    note CHAR(120) NOT NULL,                            /* комментарий к записи */
    regdate CHAR(21) NOT NULL                                                 /* дата */
);
 
CREATE TABLE IF NOT EXISTS filenames(                               /* 2 */
    id INTEGER REFERENCES notes(id) ON DELETE CASCADE,              /* номер записи */
    name CHAR(40) NOT NULL UNIQUE                                   /* имя файла */
);
во второй таблице существуют записи с одинаковыми id. Поэтому запрос типа select * from notes.*, filenames.name where notes.id = filenames.id; выдаст следующее

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Array
(
    [0] => Array
        (
            [id] => 20
            [regdate] => 2016-03-09 20:43:36  
            [note] => asdfsadfasdf                                                                                                            
            [name] => 451b161411612eac8d8b841c158b4e01.JPG    
        )
 
    [1] => Array
        (
            [id] => 20
            [regdate] => 2016-03-09 20:43:36  
            [note] => asdfsadfasdf                                                                                                            
            [name] => e69fd0de9b5284d23d04a59b2fa528ea.JPG    
        )
 
    [2] => Array
        (
            [id] => 21
            [regdate] => 2016-03-09 21:13:33  
            [note] => ASDFSDF                                                                                                                 
            [name] => 7d208b8ad0783843d17e3b5ddfdfc374.JPG    
        )
 
    [3] => Array
        (
            [id] => 21
            [regdate] => 2016-03-09 21:13:33  
            [note] => ASDFSDF                                                                                                                 
            [name] => dded161e2f9103dedb84acb77a07615d.JPG    
        )
 
)
Мне нужна вот такая структура:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Array
(
    [0] => Array
        (
            [id] => 20
            [regdate] => 2016-03-09 20:43:36  
            [note] => asdfsadfasdf                                                                                                            
            [photo] => Array
                (
                    [0] => 451b161411612eac8d8b841c158b4e01.JPG    
                    [1] => e69fd0de9b5284d23d04a59b2fa528ea.JPG    
                )
 
        )
 
    [1] => Array
        (
            [id] => 21
            [regdate] => 2016-03-09 21:13:33  
            [note] => ASDFSDF                                                                                                                 
            [photo] => Array
                (
                    [0] => 7d208b8ad0783843d17e3b5ddfdfc374.JPG    
                    [1] => dded161e2f9103dedb84acb77a07615d.JPG    
                )
 
        )
 
)
Средствами php я этого добился. А можно ли получить такую структуру сразу запросом к базе?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2016, 20:47
Ответы с готовыми решениями:

Выбор данных из нескольких таблиц
Есть 2 таблицы t1 и t2. Таблица t2 содержит внешний ключ t1_id на таблицу t1. Если записи в таблице t2 отсутствуют то, результат запроса...

Выбор данных из нескольких таблиц
Добрый вечер ! Как можно организовать выбор (Какими директивами SQL) из нескольких таблиц при наличии следующих условий: Имеется две...

Выборка данных из нескольких таблиц
Есть две таблицы. Одна хранит в себе список объектов(поля: object_id,object_name). Вторая - список статусов данных...

2
1263 / 977 / 384
Регистрация: 02.09.2012
Сообщений: 3,020
11.03.2016, 14:31
Лучший ответ Сообщение было отмечено obrazz как решение

Решение

откуда photo появляется... в таблицах такого атрибута не наблюдается
Цитата Сообщение от obrazz Посмотреть сообщение
Поэтому запрос типа select * from notes.*, filenames.name where notes.id = filenames.id; выдаст следующее
Что у вас за синтаксис такой странный?? откуда под FROM звездочки и точки взялись??

Попробуйте вот такой запрос, не знаю что по этому поводу сделает PHP, но может что-то похожее
SQL
1
2
SELECT n.id, n.regdate, n.note, array_agg(name) FROM notes n, filenames f WHERE n.id = f.id
GROUP BY n.id, n.regdate, n.note;
1
2 / 2 / 2
Регистрация: 02.07.2012
Сообщений: 38
11.03.2016, 16:02  [ТС]
Было уже поздно, просто опечатался.
Правильно было вот так: select notes.*, filenames.name from notes, filnames where notes.id = filenames.id;

Добавлено через 5 минут
Цитата Сообщение от grgdvo Посмотреть сообщение
Попробуйте вот такой запрос, не знаю что по этому поводу сделает PHP, но может что-то похожее
SQL
Выделить код
1
2
SELECT n.id, n.regdate, n.note, array_agg(name) FROM notes n, filenames f WHERE n.id = f.id
GROUP BY n.id, n.regdate, n.note;
Да спасибо это помогло.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2016, 16:02
Помогаю со студенческими работами здесь

Выборка данных SQL Select из нескольких таблиц
loans - таблица кредитных договоров debtors - таблица заемщиков Задача сделать выборку телефонов клиентов по закрытым договорам ...

Выбор данных из нескольких таблиц
Добрый день есть две таблицы 1-я Называется "Игры" с полями id_game, kod_team1, kod_team2, shet 2-я называется...

Выбор данных из нескольких таблиц
Ребят, выручайте, 2й день не могу понять, что не так. Есть несколько связанных таблиц, надо вывести в datagridview столбцы из разных...

Сложный выбор данных из нескольких таблиц
помогите пожалуйста решить такую проблему. Имеются 3 таблицы: t1 ( с полями: название, дата, количество), t2(название, data_postupl,...

Выбор данных из нескольких таблиц: Неоднозначное имя столбца "Код груза"
Помогите с ошибкой, я делаю выбор данных из нескольких таблиц. SELECT , , , , , , , FROM ., ., ., ., ., ., ., . Ошибки. Сообщение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru