![]() |
Помогите разобраться с IDшками
вот у меня намечается база с двумя таблицами, в одной таблице лежат данные юзера - типа пароль, логин, имя, адресс проживания и еще одно поле ID которая автоинкремент имеет и является примари ключем плюс еще какие-то индексы которые я связал с этими полями кроме ID(зачем так много всяких индексов ХЗ). в другой таблице хранятся его сообщения.
что мне нужно сделать что бы связать его данные с его сообщениями ? то есть связать эти таблицы, это надо мне получать ключ новой записи, то есть ID который примари кей и дописывать его в таблицу которая содержит сообщения юзера? |
У вас в таблице cooбщений должна быть поле id_user, являющимся внешним ключом к таблице пользователей.
И вообще, расставьте в сообщении запятые и большие буквы. Еле прочитал. |
Аналогично, пока понял, что нужно, 2 раза перечитал. Задача тривиальна, обыкновенный запрос на выборку при условии наличия внешнего ключа во второй таблицы.
Пример: 1-ая таблица USER 2-ая таблица DATA структура второй таблицы: USER_ID, сообщение текст запроса Код:
select user.*, data.сообщение from USER, DATA where user.id = data.user_id |
спасибо, попробую ! но еще будут вопросы !)
|
almadan, следующие вопросы облекай в более грамотную форму, не забывая расставлять знаки препинания. В противном случае вопросы будут перемещены в тест-форум до окончания изучения правил форума и русского яыка.
|
еще вот вопрос: если сообщений у пользователя много разных, как и где их хранить в базе и как к ним обращаться ? учитывая что там не один пользователь...
|
а в чем проблема? приведенная выше структура как раз эту задача и выполняет. Таблица с 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 в данном случае, а потом как-то через этот ключ выбирать сообщения уже по их уникальным ключам. если я себе представил схему то как с такой схемой работать ? то есть выбрать все поля с одинаковым ключем, а потом по данному ключу выбрать все имеющиеся уникальные ключи сообщений. то есть либо там сразу все сообщения в массив будут выгружаться либо можно по определенным ключам выбирать определенные сообщения ? вот если я в этом разберусь, то больше донимать вас не будут ) |
Цитата:
Цитата:
|
ага вроде чуть чуть понял
select * from DATA where user_id=1001 and сообщение like '%сообщение%' |
Запрос для получения всех сообщений пользователя 1001
Код:
SELECT * FROM data WHERE user_id=1001 Код:
SELECT * FROM data WHERE id=5 AND user_id=1001 Код:
SELECT * FROM data WHERE user_id=1001 AND text LIKE %Бла-бла% |
Время: 16:08. |
Время: 16:08.
© OSzone.net 2001-