mysql中的嵌套表

Nested table in mysql

提问人:Nithin Nampoothiry 提问时间:12/12/2017 更新时间:12/12/2017 访问量:2198

问:

我有 2 张桌子。包含所有个人详细信息的 USER 表和包含通过 twitter api 检索的用户时间线中的所有推文的 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 列将包含用户 ID,第 2 列包含他所有相应的 Twitter 时间线详细信息。我可以通过这样做在预言机中做到这一点:

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不允许嵌套表。那么,如何在mysql中将tweettable定义为一个对象,并使其成为列twitter_details内的嵌套表呢?

php mysql twitter 嵌套 ordbms

评论


答:

0赞 farbiondriven 12/12/2017 #1

你不能那样做,但你可以像每个人一样做。只需定义

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,与 twitt 的用户相关。

然后,您可以通过 join 获得结果

select * from user u join tweettable t where u.id = t.userID;
0赞 Vladimir 12/12/2017 #2

更好地使用跨表。例如,“users_tweets”。 表结构:

user_id | tweed_id

哪里 - 它来自“user_table”和“tweet_id”它是“id”来自user_ididtweettable

user_id | tweet_name

其他方式 - 将twitter_details转换为字符串:

$strDetails = json_encode($twitter_details)

并将此字符串插入数据库$strDetails