Вложенная таблица в mysql

У меня есть 2 таблицы. Таблица USER со всеми личными данными и TWEETTABLE со всеми твитами с временной шкалы пользователя, полученными через твиттер-интерфейс

Таблица пользователей

  id|twitter_user_name|firstname|lastname|email
-----------------------------------------------
1 |  @johnsmith     |john     |smith   |[email protected]

tweettable

name|scr_name|tweets      |created_at_ |followers_count
----------------------------------------------------------
CNN |CNN     |*tweet text*| 14nov 12:32|   38713286

Что я на самом деле на самом деле хочу:

     id|            twitter_details                             |
-----|------------------------------------------------------- |
|name |scr_name|tweets      |created_at_ |followers_count|
| ----|--------|------------|------------|--------------
1 |  CNN|CNN     |*tweet text*| 14nov 12:32|   38713286    |
----|------------------------------------------------------
2 |  BBC|BBC     |*tweet text*| 14Nov 16:43|   38713254    |
----|-----|--------|------------|------------|---------------|------
3

то есть таблица внутри столбца. Столбец 1 будет иметь идентификатор пользователя и столбец два со всеми его соответствующими подробностями временной шкалы в твиттере. Вероятно, я могу сделать это в oracle, выполнив следующее:

CREATE TYPE tweet_typ AS OBJECT
(
name VARCHAR2(20),
scr_name VARCHAR2(25),
tweets text,
created_at timestamp;
followers count VARCHAR2(25)
)
MEMBER PROCEDURE display_details (SELF IN OUT
twitter_typ )
);

и использовать это внутри столбца twitter_details как вложенную таблицу

CREATE TABLE TWEETTABLE
( id INT,
twitter_details tweet_typ
);

А потом вставить

 INSERT INTO TWEETTABLE
VALUES ( 1,twitter_typ (--extracted values goes here--));

Но Mysql не допускает вложенные таблицы. Так как я могу определить tweettable как объект и сделать его вложенной таблицей внутри столбца twitter_details в mysql?

5

Решение

Вы не можете сделать это, но вы можете сделать так, как все. Просто определите

tweettable

как

tweetID | userID |name|scr_name|tweets      |created_at_ |followers_count
----------------------------------------------------------
1          1    CNN |CNN     |*tweet text*| 14nov 12:32|   38713286

Вы добавляете 2 столбца. Один (может быть autoinc) tweetID и один userID, связанный с пользователем, который прокрутил.

Тогда вы получите свой результат с join

select * from user u join tweettable t where u.id = t.userID;
0

Другие решения

Лучше использовать кросс-таблицу. Например, «users_tweets».
структура таблицы:

user_id | tweed_id

куда user_id — это id из ‘user_table’ и ‘tweet_id’ это ‘id’ из tweettable

или же

user_id | tweet_name

Другой способ — конвертировать twitter_details в строку:

$strDetails = json_encode($twitter_details)

и вставьте эту строку $strDetails в базу данных

0

По вопросам рекламы [email protected]