Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите разобраться с IDшками (http://forum.oszone.net/showthread.php?t=215133)

almadan 08-09-2011 13:41 1748767

Помогите разобраться с IDшками
 
вот у меня намечается база с двумя таблицами, в одной таблице лежат данные юзера - типа пароль, логин, имя, адресс проживания и еще одно поле ID которая автоинкремент имеет и является примари ключем плюс еще какие-то индексы которые я связал с этими полями кроме ID(зачем так много всяких индексов ХЗ). в другой таблице хранятся его сообщения.
что мне нужно сделать что бы связать его данные с его сообщениями ? то есть связать эти таблицы, это надо мне получать ключ новой записи, то есть ID который примари кей и дописывать его в таблицу которая содержит сообщения юзера?

PhilB 08-09-2011 18:36 1748998

У вас в таблице cooбщений должна быть поле id_user, являющимся внешним ключом к таблице пользователей.

И вообще, расставьте в сообщении запятые и большие буквы. Еле прочитал.

Delirium 09-09-2011 02:35 1749324

Аналогично, пока понял, что нужно, 2 раза перечитал. Задача тривиальна, обыкновенный запрос на выборку при условии наличия внешнего ключа во второй таблицы.
Пример:
1-ая таблица USER
2-ая таблица DATA

структура второй таблицы:
USER_ID, сообщение


текст запроса
Код:

select user.*, data.сообщение from USER, DATA where user.id = data.user_id

almadan 09-09-2011 06:25 1749345

спасибо, попробую ! но еще будут вопросы !)

Delirium 09-09-2011 08:41 1749378

almadan, следующие вопросы облекай в более грамотную форму, не забывая расставлять знаки препинания. В противном случае вопросы будут перемещены в тест-форум до окончания изучения правил форума и русского яыка.

almadan 11-09-2011 15:39 1750795

еще вот вопрос: если сообщений у пользователя много разных, как и где их хранить в базе и как к ним обращаться ? учитывая что там не один пользователь...

Delirium 12-09-2011 00:53 1751134

а в чем проблема? приведенная выше структура как раз эту задача и выполняет. Таблица с ID пользователя, своим собственным ID(счетчик), и поле для текста сообщений.
Что значит - обращаться? Искать их поиском, учитывая ID пользователя:
Код:

select * from DATA where user_id=25
или по тексту сообщения:
Код:

select * from DATA where user_id=25 and сообщение like '%часть сообщения%'

almadan 12-09-2011 06:45 1751170

ну я понял так, там будет таблица которая будет содержать неизменяемый ИД, который будет браться из таблицы с ЮЗЕРАМИ, потом будет поле которое уже будет содержать уникальные ИД относящиеся к тем или иным сообщениям.
к примеру ЮЗЕР имеет уникальный ключ у себя 1001 и имеет 5 сообщений, в базе это будет выглядеть примерно так:

1001 0001 "первое сообщение !"
1001 0002 "второе сообщение !"
1001 0003 "третье сообщение !"
1001 0004 "четвертое сообщение !"
1001 0005 "пятое сообщение !"

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

Delirium 12-09-2011 15:46 1751445

Цитата:

Цитата almadan
и когда надо будет получить все сообщения юзера, придется получать количество всех имеющихся одинаковых ключей то есть 1001 в данном случае, а потом как-то через этот ключ выбирать сообщения уже по их уникальным ключам. »

Цитата:

Цитата Delirium
select * from DATA where user_id=1001 and сообщение like '%сообщение%' »

Читай азы SQL, к примеру портал SQL.RU очень познавателен в этом плане.

almadan 13-09-2011 06:13 1751863

ага вроде чуть чуть понял
select * from DATA where user_id=1001 and сообщение like '%сообщение%'

CTEPBA 27-10-2011 11:00 1782756

Запрос для получения всех сообщений пользователя 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 %Бла-бла%


Время: 16:08.

Время: 16:08.
© OSzone.net 2001-