Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 7

Данные из Таблицы в таблицу (намекните)

18.10.2013, 17:45. Показов 951. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть в бд таблица юзерс, где строки - юзеры, а столбцы - их атрибуты\значения\данные (пока точо не знаю какой термин подобрать). Т.е. то, что вносится при регистрации.
И есть таблица стата, где строки - те же юзеры, но столбцы - совсем иные значения. в этих ячейках записывается статистика их игр - победы, поражения и прочее....
Не могу понять, каким макаром с первой таблицы взять те 60-70 пользователей (но лишь их юезрнейм) и записать во вторую таблицу эти юзернеймы ( 1 юзер = 1 строка) с данными всё по ноль (в ячейках).
Как это вообще сделать?
Там подконектится, селект фром, сделать список - фечт-аррай, потом подконектится ко второй? сделать инсёрт?
или чё?

А то вручную по одному переносить - не "ок"... Как бы это автоматизировать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.10.2013, 17:45
Ответы с готовыми решениями:

Как добавить данные в таблицу БД из другой таблицы с FOREIGN KEY
Вот таблицы, чтобы было понятно что нужно: (PROGRAM) id|kod_lesson_teacher 1 | 1 2 | 2 (LESSON_TEACHER) ...

Сделать выборку, потом скопировать данные из таблицы 1 в таблицу 2 а данные выборки удалить из таблицы 1
Нужно сделать выборку в таблице 1, потом те данные которые выдаст выборка в таблице 1 скопировать в таблицу 2 а после успешного копирования...

Два разных комбобокса используют в качестве источника данных одну таблицу, но пишут данные в РАЗНЫЕ поля прибинденной таблицы. Данные меняются в ОБОИХ
ComboBox.DataBindings.Add. Два разных комбобокса используют в качестве источника данных одну таблицу (справочную), но пишут данные в...

16
PHP developer
 Аватар для masik49
259 / 157 / 26
Регистрация: 20.03.2013
Сообщений: 1,018
18.10.2013, 17:50
Цитата Сообщение от Neutrino Посмотреть сообщение
А то вручную по одному переносить - не "ок"... Как бы это автоматизировать?
Можете таблицы представить?
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 7
18.10.2013, 17:54  [ТС]
То есть? Скриношты из пхпмайадмин?
0
PHP developer
 Аватар для masik49
259 / 157 / 26
Регистрация: 20.03.2013
Сообщений: 1,018
18.10.2013, 17:58
Цитата Сообщение от Neutrino Посмотреть сообщение
То есть? Скриношты из пхпмайадмин?
Покажите 2 таблицы и поля которые в них есть.
0
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 7
18.10.2013, 18:02  [ТС]
эм... вот))
Миниатюры
Данные из Таблицы в таблицу (намекните)   Данные из Таблицы в таблицу (намекните)  
0
8 / 8 / 2
Регистрация: 30.09.2013
Сообщений: 38
18.10.2013, 18:24
Вам нужно связать таблицы. Используйте что-то вроде этого:
MySQL
1
FOREIGN KEY (id_author) REFERENCES users (id_user)
Добавлено через 2 минуты
Можно подредактировать уже созданные таблицы.
1
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 7
18.10.2013, 18:24  [ТС]
Цитата Сообщение от Mihail_66 Посмотреть сообщение
1
FOREIGN KEY (id_author) REFERENCES users (id_user)
Ухты... а как это? я с таким еще не работал...
0
8 / 8 / 2
Регистрация: 30.09.2013
Сообщений: 38
18.10.2013, 18:40
Вот пример создания связанных таблиц:
Миниатюры
Данные из Таблицы в таблицу (намекните)  
1
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 830
Регистрация: 09.09.2009
Сообщений: 29,554
18.10.2013, 23:29
Цитата Сообщение от Neutrino Посмотреть сообщение
Там подконектится, селект фром, сделать список - фечт-аррай, потом подконектится ко второй? сделать инсёрт?
http://dev.mysql.com/doc/refma... elect.html
1
Заблокирован
19.10.2013, 05:54
Цитата Сообщение от Mihail_66 Посмотреть сообщение
Вам нужно связать таблицы. Используйте что-то вроде этого:
Это не связь. Это геморрой.

Связь делается join'ами.

SQL
1
SELECT * FROM modx_web_users INNER JOIN stata USING(username);
Какие там FK - select'у абсолютно по барабану.

Добавлено через 4 минуты
Подразумевается что `username` уникальные поля в обоих таблицах. Иначе и если id юзеров в них совпадают, то using(id), но тогда в `stata` поле юзернейм избыточно, его можно/надо удалить.

Добавлено через 7 минут
Mihail_66,

Чтобы соединить по FK надо проделать примерно следующее.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$q = "select * from infromation_schema.key_column_usage 
          where table_schema = $db_name 
          and table_name = $table_name;"
 
$res = $mysqli->query($q);
if(!$res->row_nums) return 0;
$t = $res->fetch_object();
 
 
$q = "select * from $t->table_name 
          inner join $t->referenced_table_name 
          on $t->coumn_name = $t->refernenced_column_name";
Теперь в $q запрос на объединение.

Добавлено через 2 минуты
Вместо select * from infromation_schema.tables можно перечислить только те поля, которые в запросе.

Добавлено через 2 минуты
Поскольку отношений может быть больше чем 1, придется циклить по всем и составлять запрос на все.
1
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
19.10.2013, 05:55
Это не связь. Это геморрой.
Связь делается join'ами.
Какие там FK - select'у абсолютно по барабану.
Почему геморрой? Третья нормальная форма, все дела.
join'ами делается не связь, а выборка.
selecty может и по барабану, а индекс повесить все же стоит. Как минимум из-за существенного прироста скорости джоина, как максимум, чтобы потом самому не запутаться, что к чему "привязано"
0
Заблокирован
19.10.2013, 06:17
Кстати, если все-таки id в таблицах ТС не совпадает, то придется перечислять все поля и давать одному из id псевдоним, или не включать его в выборку. Иначе в типовом сценарии с fetch_accoc() одно из них выпадет в осадок.

Добавлено через 1 минуту
Цитата Сообщение от Zvook Посмотреть сообщение
join'ами делается не связь, а выборка.
Ну так покажите как вы реализуете связь без выборки. Чтобы так сказать терминологию уточнить. А то блин слишком красиво у вас все выглядит... типа добавил fk и вперде.

Добавлено через 2 минуты
Тем самым вы вводите читателей в глубокую... это заблуждение.

Добавлено через 6 минут
Цитата Сообщение от Zvook Посмотреть сообщение
selecty может и по барабану, а индекс повесить все же стоит. Как минимум из-за существенного прироста скорости джоина, как максимум, чтобы потом самому не запутаться, что к чему "привязано"
Если юзеры еще куда-то линкуются то первичный индекс все равно на автоинкременте и смысл индексации юзеров лишь в том, что авторизация ищет не по id, а по имени. Но и по паролю. Стало быть хэш тоже надо индексировать. Но это какое отношение к связям?

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

Добавлено через 7 минут
Еще раз

Цитата Сообщение от Zvook Посмотреть сообщение
join'ами делается не связь, а выборка.
Такая байда даже повсеместно встречается. ТС, читайте внимательно, пригодится.

Установление связей реализуется той самой выборкой и больше никак. Таким образом выборка в которую включены отношения - это и есть связь.

Отношения же вещь абстрактная, известная только творцу их. Хочет творец напомнить самому себе каковы у него отношения - пропишет их в DDL (data definition language), не хочет - не пропишет. На реализацию это никак не влияет.

Что такое отношения? Это как объект относится к другому объекту. Кто из них родитель, кто потомок и далее по тем же отношениям. Вот и все.

Ни один из мне известных engine не реализует отношения самостоятельно. Все должен делать сам человек или его ПО.
0
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
19.10.2013, 06:21
Ну так покажите как вы реализуете связь без выборки.
MySQL
1
FOREIGN KEY (id_author) REFERENCES users (id_user)

Если юзеры еще куда-то линкуются то первичный индекс все равно на автоинкременте и смысл индексации юзеров лишь в том, что авторизация ищет не по id, а по имени. Но и по паролю. Стало быть хэш тоже надо индексировать. Но это какое отношение к связям?

Так вот, чтобы не запутаться связанным полям дают самоочевидные индентификаторы. Конечно и рефы не помешают, но это опять же никакого отношения к FK. REFERENCES можно прописать в любом запросе, согласно правил парсятся даже если не используются. Тогда это всего лишь каммент такой.
Да спору нет. Можно вообще не использовать внешние ключи и все будет работать
Индексы значительно повышают скорость работы, о чем я уже писал. Особенно на больших объемах данных.
Если следовать вашей логике, тогда выгоднее использовать myIsam
0
Заблокирован
19.10.2013, 07:02
Цитата Сообщение от Zvook Посмотреть сообщение
FOREIGN KEY (id_author) REFERENCES users (id_user)
Вы даже этого не знаете, что FK и рефы - не связанные между собой вещи. Рефы сами по себе, вк сами. ВК лежат в одной таблице, со всеми потрохами в которых не так просто разобраться, рефы - в другой, выше я давал способ их использования.

Но самое злое что рефы парсятся, но не компилятся, и только те моторы, которые поддерживают ВК те и реф сохраняют. Поэтому я сделал свою таблицу рефов и не парюсь.

По цитате. Это она и ест - абстракция. Вопрос же был про реализацию. От слова real.
0
91 / 91 / 23
Регистрация: 02.09.2013
Сообщений: 276
19.10.2013, 08:42
Цитата Сообщение от sqlnub Посмотреть сообщение
Вы даже этого не знаете, что FK и рефы - не связанные между собой вещи. Рефы сами по себе, вк сами. ВК лежат в одной таблице, со всеми потрохами в которых не так просто разобраться, рефы - в другой, выше я давал способ их использования.

Но самое злое что рефы парсятся, но не компилятся, и только те моторы, которые поддерживают ВК те и реф сохраняют. Поэтому я сделал свою таблицу рефов и не парюсь.

По цитате. Это она и ест - абстракция. Вопрос же был про реализацию. От слова real.
Да, вы правы, не связанные. Но используются именно в связке. Что впрочем и логично. Лично я нигде не видел внешние ключи без реферренса, да вобщем то и зачем ?
Спорить не стану, вы во многом правы, но ТСу эта правда пока что не особо нужна мне кажется
0
Заблокирован
19.10.2013, 09:23
Цитата Сообщение от Zvook Посмотреть сообщение
Да, вы правы, не связанные. Но используются именно в связке.
Я пытаюсь вам объяснить что распространять заблуждения пагубно. Без специальной поддержки в ПО эти FK использовать для реализации связей не льзя. Как осуществить поддержку - я показал выше.

Все что делает сам engine имея в распоряжении FK - только материться при попытках нарушить data integrity. Которую и ПО способно защитить не хуже, а даже и получше, поскольку все в его власти.

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

Короче, таблица это объект, а отношение в субъекте. Отношений как объектов не существует и читатели должны четко понимать что добавка в виде FK с рефом - ничего им не дает в плане реализации этих самых отношений.

Кстати, в точности так все изложено в мануале от Оракл.

Добавлено через 2 минуты
Собственная таблица отношений гораздо более эффективна, поскольку вам не придется каждый раз делать alter table чтобы добавить, убрать или поменять FK или реф. В рабочем порядке открываете эту таблицу и вносите, удаляете и редактируете записи. Применили - заработало.

Добавлено через 6 минут
Более того, в нее можно внести не только рефы как таковые, но и следующий слой - на значения какого поля заменить значения какого поля. Например PMA по FK способен показать все значения связанного поля в списке. Но что они значат для человека? Ему что 18, что 109384 - эквипенисуально. Ему надо "Ботинки", "Кеды", "Валенки", "Унты" и тп, а не коды категорий. Ну вот, а вы можете добавить значения поля которое надо подставить вместо кода и обеспечив поддержку таким данным в интерфейсе приложения осчастливить оператора.

Ну да, это уже очень далеко от вопроса темы.
0
8 / 8 / 2
Регистрация: 30.09.2013
Сообщений: 38
19.10.2013, 11:49
sqlnub
Полностью с Вами согласен, но для начинающего более наглядно. Тем более Вы наверно обратили внимание, что в моем примере таблицы создаются из командной строки. Конечно, сейчас вряд ли кто-нибудь будет так делать, когда все это быстро сделает phpMyAdmin или подобные. Только мое мнение такое, что если за меня что-то сделает "дядя", то у меня в голове мало чего останется.

Добавлено через 1 час 3 минуты
Поторопился я с ответом, а вторую страницу сразу и не заметил. Neutrino просил только намекнуть, вот ему и намекнули. А что он выберет, это его дело. Господа профессора, вспомните что и вы когда-то были первоклассниками...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2013, 11:49
Помогаю со студенческими работами здесь

Подтянуть данные из таблицы в таблицу
Доброе утро! Помогите разобраться с двумя таблицами, какой функцией лучше воспользоваться?

Вставить в таблицу данные из другой таблицы
Здравствуйте! Нужно вставить данные поля id Таблицы Т1 в таблицу Т2 в поля А_id и Б_id. Есть лодка у лодки есть хозяин и есть водитель....

Как перезаписывать данные из таблицы №1 в таблицу №2?
всем привет вот такая проблема мне надо перезаписывать данные из `ss` в `".$varvar."` если `ss`.`id`=...

Как взять данные из таблицы 1 в таблицу 2
Как сделать чтобы чтобы данные которые находятся в dataGridView1 добавлялись в dataGridView2 на другую форму. При том чтобы они добавлялись...

Данные таблицы в другую таблицу по условию
Подскажите пожалуйста, есть Таблица 1 (80 полей ) и таблица 2 (78 полей). необходимо данные из таблицы 1, перенести в таблицу 2(она...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru