Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Serhij
4 / 4 / 0
Регистрация: 23.11.2008
Сообщений: 44
1

Реализация алгоритма сложения массивов

29.11.2010, 02:42. Просмотров 1417. Ответов 5
Метки нет (Все метки)

Есть два массива которые получились в результате запроса из базы данных.
Первый допустим массив $autors содержит в себе таблицу авторов:
Id-------fio---------id_teh
1------Иванов-------2,3
2------Петров-------1
3------Сидоров------1,2,3

И второй $teh:

Id-------name
1-------Графика
2-------Мозаика
3-------Карандаш
То есть тут связь между таблицами «Один ко многим» один автор может владеть несколькими «Техниками»
Нужно создать 3-й массив $autors_teh
Id(из массива авторов)--------fio,------------------teh_txt
1-------------------------------Иванов----------------Мозаика,Карандаш
2-------------------------------Петров----------------Графика
3-------------------------------Сидоров-------------- Графика,Мозаика,Карандаш

Добавлено через 11 минут
да, кстати в поле teh таблицы autors не обязательно писать так - 1,2,3 и т д можно и так "1","2","3" или так 1.2.3 вобшем как вам будит удобно для реализации алгоритма
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2010, 02:42
Ответы с готовыми решениями:

Реализация алгоритма сортировки пирамидой
Все привет! Нужна помощь в реализации алгоритма пирамидальной сортировки...

Реализация алгоритма Дейкстры на PHP
Доброй ночи. Необходимо реализовать алгоритм Дейкстры на PHP. Читал много...

Считывание массивов, ассоциативных массивов из файлов
Есть 2 массива - выведено через print_r Array ( => Array ( => Менеджер 3 =>...

Програмная реализация алгоритма сложения трех матриц
Люди добрые, помогите пожалуйста!!:cry: Мне для курсовой работы нужно написать...

Реализация заданного алгоритма заполнения двумерных массивов
Добрый день, уважаемые форумчане! Помогите пожалуйста реализовать следующие...

5
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
29.11.2010, 06:44 2
Serhij, зачем еще и этим память забивать? Можно использовать значения id_teh из массива авторов для того, что бы получить названия этих техник из массива $teh. Это проще если
Цитата Сообщение от Serhij Посмотреть сообщение
1,2,3
отдельные элементы массива, а не один. Покажите Ваши массивы.
0
Vovan-VE
13161 / 6546 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
29.11.2010, 17:31 3
Лучший ответ Сообщение было отмечено как решение

Решение

В таблице авторов не надо городить "2,1,3" в одном поле.
В таблице авторов только ID и fio. В таблице teh только Id и name. В третьей таблице Id_author и Id_teh вместе одним уникальным ключом.
Код
 authors
Id   fio
------------
 1  Иванов
 2  Петров
 3  Сидоров

 teh
Id   name
-------------
 1  Графика
 2  Мозаика
 3  Карандаш

 authors_teh
Id_author  Id_teh
-----------------
  1          2
  1          3
  2          1
  3          1
  3          2
  3          3
И все одним запросом можно получить
SQL
1
2
3
4
5
6
7
8
SELECT  `a`.*, IFNULL(`t`.`tehs`, '') AS `tehs`
FROM `authors` AS `a` LEFT JOIN (
  SELECT `a`.`Id_author`, GROUP_CONCAT(`t`.`name` ORDER BY `t`.`name` SEPARATOR ', ') AS `tehs`
  FROM `authors_teh` AS `a` INNER JOIN `teh` AS `t` ON `a`.`Id_teh` = `t`.`Id`
  GROUP BY `Id_author`
  ORDER BY NULL
) AS `t` ON `a`.`Id` = `t`.`Id_author`
ORDER BY `a`.`fio`
1
romchiksoad
29.11.2010, 21:29
  #4

Не по теме:

Vovan-VE, почему то я не подумал об этом даже:) Начал "выкручиваться" из сложившейся ситуации, так сказать,а не предложил новый вариант( как ты, к примеру ).

0
Serhij
4 / 4 / 0
Регистрация: 23.11.2008
Сообщений: 44
02.12.2010, 23:11  [ТС] 5
Цитата Сообщение от Vovan-VE Посмотреть сообщение
В таблице авторов не надо городить "2,1,3" в одном поле.
В таблице авторов только ID и fio. В таблице teh только Id и name. В третьей таблице Id_author и Id_teh вместе одним уникальным ключом.
Код
 authors
Id   fio
------------
 1  Иванов
 2  Петров
 3  Сидоров

 teh
Id   name
-------------
 1  Графика
 2  Мозаика
 3  Карандаш

 authors_teh
Id_author  Id_teh
-----------------
  1          2
  1          3
  2          1
  3          1
  3          2
  3          3
И все одним запросом можно получить
SQL
1
2
3
4
5
6
7
8
SELECT  `a`.*, IFNULL(`t`.`tehs`, '') AS `tehs`
FROM `authors` AS `a` LEFT JOIN (
  SELECT `a`.`Id_author`, GROUP_CONCAT(`t`.`name` ORDER BY `t`.`name` SEPARATOR ', ') AS `tehs`
  FROM `authors_teh` AS `a` INNER JOIN `teh` AS `t` ON `a`.`Id_teh` = `t`.`Id`
  GROUP BY `Id_author`
  ORDER BY NULL
) AS `t` ON `a`.`Id` = `t`.`Id_author`
ORDER BY `a`.`fio`
ну про связь между таблицами я понял, а вот как быть если один автор может иметь несколько "техник", делать поля для каждой техники в таблице авторов????
0
Vovan-VE
13161 / 6546 / 1038
Регистрация: 10.01.2008
Сообщений: 15,070
03.12.2010, 15:01 6
Третья таблица authors_teh (Id_author Id_teh) содержит по записи на каждую техника у каждого автора. Автор 1 обладает техниками 2 и 3: в таблице две записи: 1-2 и 1-3.
1
03.12.2010, 15:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2010, 15:01

алгоритм сложения двух чисел является примером алгоритма
:gcray2: помогитее

Функция сложения массивов
Подскажите плиз , у меня есть функция , которая должна складывать два массива ....

Реализация метода сложения матриц
import javax.swing.JOptionPane; public class matrica { public int matriks;...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru