Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос на основе массива данных / 8 сообщений из 8, страница 1 из 1
25.10.2015, 23:31:38
    #39086266
imediasun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос на основе массива данных
Есть массив
Код: 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.
	Array
(
    [0] => Array
        (
            [id_pages_filter] => 1
            [name_field] => автор
            [main_field] => pages.author
            [linked_table] => authors
            [linked_field] => id_author
        )

    [1] => Array
        (
            [id_pages_filter] => 2
            [name_field] => шаблон
            [main_field] => pages.layout
            [linked_table] => layouts
            [linked_field] => layout_id
        )

    [2] => Array
        (
            [id_pages_filter] => 3
            [name_field] => дата
            [main_field] => pages.page_creation_date
            [linked_table] => 
            [linked_field] => 
        )

)


Необходимо
//для каждого ключа массива выбрать уникальные значения из таблицы указанной в элементе массива [main_field]
//соединив и выбрав информацию из сопряженной таблицы указанной в элементе массива [linked_table] соединительным полем является элемент массива [linked_field]
Важно чтобы повторяющиеся значения встречающиеся в [main_field] не учитывались а были бы уникальными
результатом должен быть массив следующего вида

Код: 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.
	Array
(
    [0] => Array
        (
            [name_filter] => 'автор'
            [0] => Фисалович
            [1] => Гарбузевич
            //потому что в таблице pages только 2 уникальных автора
        )

    [1] => Array
        (
            [name_filter] => шаблон
            [0] => smart_layout
            //потому что в таблице pages только один уникальный шаблон и он для всех страниц
        )

    [2] => Array
        (
            [name_filter] => дата
            [0] => 12.01.15
            [1] => 13.01.15
            [2] => 14.01.15
            [3] => 15.01.15

        )

)
...
Рейтинг: 0 / 0
25.10.2015, 23:54:06
    #39086275
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос на основе массива данных
imediasun, а в чем именно у вас возникла трудность, когда вы самостоятельно пробовали составить этот запрос?
Скиньте свой запрос, который вы только что пытались составить и мы вам найдем в нем ошибку и подскажем как именно его доработать.
...
Рейтинг: 0 / 0
26.10.2015, 00:08:17
    #39086279
imediasun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос на основе массива данных
для каждого элемента массива подобный запрос
SELECT * FROM (`authors`) Right JOIN `pages` ON `pages`.`author`=`authors`.`id_author`

но дело в том что в таблице pages 6 неуникальных авторов, и подобный запрос мне выводит 6 элементов массива вместо одного
вот так
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
         [name_filter] => автор
            [0] => Array
                (
                    [0] => Array
                        (
                            [id_author] => 1
                            [author_sername] => Фисалович
                            [author_name] => Ольга
                            [author_photo] => /photos/fisalovich.jpg
                            [author_job] => эколог-проектант ЧП «Центр экологической безопасности»                   
                            [id_page] => 1
                            [name] => Главная
                            [page_type] => 4
                            [layout] => 1
                            [author] => 1
                            [page_creation_date] => 0000-00-00 00:00:00
                        )

                    [1] => Array
                        (
                            [id_author] => 1
                            [author_sername] => Фисалович
                            [author_name] => Ольга
                            [author_photo] => /photos/fisalovich.jpg
                            [author_job] => эколог-проектант ЧП «Центр экологической безопасности»                   
                            [id_page] => 2
                            [name] => Товары
                            [page_type] => 2
                            [layout] => 1
                            [author] => 1
                            [page_creation_date] => 0000-00-00 00:00:00
                        )

                    [2] => Array
                        (
                            [id_author] => 1
                            [author_sername] => Фисалович
                            [author_name] => Ольга
                            [author_photo] => /photos/fisalovich.jpg
                            [author_job] => эколог-проектант ЧП «Центр экологической безопасности»                   
                            [id_page] => 3
                            [name] => Вакансии
                            [page_type] => 0
                            [layout] => 1
                            [author] => 1
                            [page_creation_date] => 0000-00-00 00:00:00
                        )

                    [3] => Array
                        (
                            [id_author] => 1
                            [author_sername] => Фисалович
                            [author_name] => Ольга
                            [author_photo] => /photos/fisalovich.jpg
                            [author_job] => эколог-проектант ЧП «Центр экологической безопасности»                   
                            [id_page] => 4
                            [name] => События и новости
                            [page_type] => 6
                            [layout] => 1
                            [author] => 1
                            [page_creation_date] => 0000-00-00 00:00:00
                        )

                    [4] => Array
                        (
                            [id_author] => 1
                            [author_sername] => Фисалович
                            [author_name] => Ольга
                            [author_photo] => /photos/fisalovich.jpg
                            [author_job] => эколог-проектант ЧП «Центр экологической безопасности»                   
                            [id_page] => 5
                            [name] => О нас
                            [page_type] => 7
                            [layout] => 1
                            [author] => 1
                            [page_creation_date] => 0000-00-00 00:00:00
                        )

                    [5] => Array
                        (
                            [id_author] => 1
                            [author_sername] => Фисалович
                            [author_name] => Ольга
                            [author_photo] => /photos/fisalovich.jpg
                            [author_job] => эколог-проектант ЧП «Центр экологической безопасности»                   
                            [id_page] => 6
                            [name] => Контакты
                            [page_type] => 5
                            [layout] => 1
                            [author] => 1
                            [page_creation_date] => 0000-00-00 00:00:00
                        )

                )

        )


Модератор: Пожалуйста, используйте правильные тэги для оформления поста.
...
Рейтинг: 0 / 0
26.10.2015, 00:32:02
    #39086288
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос на основе массива данных
imediasun, дело в том, что вы огромным количеством дополнительных "оформлений" очень сильно затрудняете возможность помочь вам. Это ведь форум посвящен mysql, а не программированию на php.

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

Код: sql
1.
2.
select distinct name from t;
select name from t group by name;



Оба эти запроса дадут один и тот же результат - список уникальных значений по колонке name. Причем группировка работает ещё и как сортировка, а distinct всегда будет давать вперемешку случайным образом.

Итого, я призываю вас вычленить из вашей ситуации чисто вопрос относящийся к mysql и перестать его смешивать с вопросами программирования на php.
...
Рейтинг: 0 / 0
26.10.2015, 10:35:10
    #39086481
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос на основе массива данных
Lumiximediasun, дело в том, что вы огромным количеством дополнительных "оформлений" очень сильно затрудняете возможность помочь вам. Это ведь форум посвящен mysql, а не программированию на php. Модератор: +1
...
Рейтинг: 0 / 0
26.10.2015, 10:41:03
    #39086492
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос на основе массива данных
imediasunв таблице pages 6 неуникальных авторов, и подобный запрос мне выводит 6 элементов массива вместо одного
И правильно делает.
Если нужно "зачистить" повторные - делайте эту свёртку на клиенте.
...
Рейтинг: 0 / 0
26.10.2015, 14:19:58
    #39086863
imediasun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос на основе массива данных
Судя по этому запросу
Код: sql
1.
SELECT DISTINCT `author` FROM (`pages`) JOIN `authors` ON `pages`.`author`=`authors`.id_author`


он должен выбрать уникальные значения из поля author таблицы pages и подгрузить из таблицы authors информацию об авторе с id_author равным pages.author

но у меня получается вот такой массив без соединения
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
[0] => Array
                (
                    [0] => Array
                        (
                            [author] => 1
                        )

                )
...
Рейтинг: 0 / 0
26.10.2015, 14:46:35
    #39086916
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос на основе массива данных
imediasunи подгрузить из таблицы authors информацию об авторе с id_author равным pages.author

он и не должен ничего подгружать, потому что после ключевого слова select вы указали только одно поле - authors - он вам его и выдает. если хотите ещё какие-то поля, то перечислите их через запятую


Код: sql
1.
select distinct authors, author_sername from pages join authors on author = id_author;



или если нужны только фамилии то сразу вот так

Код: sql
1.
select distinct author_sername from pages join authors on author = id_author;
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос на основе массива данных / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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