Показать полную графическую версию : Помогите разобраться с IDшками
вот у меня намечается база с двумя таблицами, в одной таблице лежат данные юзера - типа пароль, логин, имя, адресс проживания и еще одно поле ID которая автоинкремент имеет и является примари ключем плюс еще какие-то индексы которые я связал с этими полями кроме ID(зачем так много всяких индексов ХЗ). в другой таблице хранятся его сообщения.
что мне нужно сделать что бы связать его данные с его сообщениями ? то есть связать эти таблицы, это надо мне получать ключ новой записи, то есть ID который примари кей и дописывать его в таблицу которая содержит сообщения юзера?
У вас в таблице cooбщений должна быть поле id_user, являющимся внешним ключом к таблице пользователей.
И вообще, расставьте в сообщении запятые и большие буквы. Еле прочитал.
Delirium
09-09-2011, 02:35
Аналогично, пока понял, что нужно, 2 раза перечитал. Задача тривиальна, обыкновенный запрос на выборку при условии наличия внешнего ключа во второй таблицы.
Пример:
1-ая таблица USER
2-ая таблица DATA
структура второй таблицы:
USER_ID, сообщение
текст запроса select user.*, data.сообщение from USER, DATA where user.id = data.user_id
спасибо, попробую ! но еще будут вопросы !)
Delirium
09-09-2011, 08:41
almadan, следующие вопросы облекай в более грамотную форму, не забывая расставлять знаки препинания. В противном случае вопросы будут перемещены в тест-форум до окончания изучения правил форума и русского яыка.
еще вот вопрос: если сообщений у пользователя много разных, как и где их хранить в базе и как к ним обращаться ? учитывая что там не один пользователь...
Delirium
12-09-2011, 00:53
а в чем проблема? приведенная выше структура как раз эту задача и выполняет. Таблица с ID пользователя, своим собственным ID(счетчик), и поле для текста сообщений.
Что значит - обращаться? Искать их поиском, учитывая ID пользователя:
select * from DATA where user_id=25
или по тексту сообщения:
select * from DATA where user_id=25 and сообщение like '%часть сообщения%'
ну я понял так, там будет таблица которая будет содержать неизменяемый ИД, который будет браться из таблицы с ЮЗЕРАМИ, потом будет поле которое уже будет содержать уникальные ИД относящиеся к тем или иным сообщениям.
к примеру ЮЗЕР имеет уникальный ключ у себя 1001 и имеет 5 сообщений, в базе это будет выглядеть примерно так:
1001 0001 "первое сообщение !"
1001 0002 "второе сообщение !"
1001 0003 "третье сообщение !"
1001 0004 "четвертое сообщение !"
1001 0005 "пятое сообщение !"
да ???
и когда надо будет получить все сообщения юзера, придется получать количество всех имеющихся одинаковых ключей то есть 1001 в данном случае, а потом как-то через этот ключ выбирать сообщения уже по их уникальным ключам.
если я себе представил схему то как с такой схемой работать ? то есть выбрать все поля с одинаковым ключем, а потом по данному ключу выбрать все имеющиеся уникальные ключи сообщений. то есть либо там сразу все сообщения в массив будут выгружаться либо можно по определенным ключам выбирать определенные сообщения ?
вот если я в этом разберусь, то больше донимать вас не будут )
Delirium
12-09-2011, 15:46
и когда надо будет получить все сообщения юзера, придется получать количество всех имеющихся одинаковых ключей то есть 1001 в данном случае, а потом как-то через этот ключ выбирать сообщения уже по их уникальным ключам. »
select * from DATA where user_id=1001 and сообщение like '%сообщение%' »
Читай азы SQL, к примеру портал SQL.RU очень познавателен в этом плане.
ага вроде чуть чуть понял
select * from DATA where user_id=1001 and сообщение like '%сообщение%'
Запрос для получения всех сообщений пользователя 1001
SELECT * FROM data WHERE user_id=1001
Запрос для получения определённого сообщения уникальный номер которого например 5, пользователя 1001
SELECT * FROM data WHERE id=5 AND user_id=1001
Запрос для получения сообщений в тексте которых есть словосочетание "Бла-бла", пользователя 1001
SELECT * FROM data WHERE user_id=1001 AND text LIKE %Бла-бла%
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.