mysql中的嵌套表

时间:2017-12-12 10:01:40

标签: php mysql twitter nested ordbms

我有2张桌子。 USER表格包含所有个人详细信息,TWEETTABLE,用户通过twitter api检索的所有推文

用户表

  id|twitter_user_name|firstname|lastname|email
 -----------------------------------------------
  1 |  @johnsmith     |john     |smith   |js@gmail.com

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时间线详细信息。我可以在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定义为一个对象并使其成为mysql中twitter_details列中的嵌套表?

2 个答案:

答案 0 :(得分:0)

你不能这样做,但你可以按照每个人的方式行事。只需定义

tweettable

作为

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

添加2列。一个(可以是autoinc)tweetID和一个用户ID,与用户交叉相关。

然后通过加入

获得结果
select * from user u join tweettable t where u.id = t.userID;

答案 1 :(得分:0)

更好地使用跨表。例如" users_tweets"。 表结构:

user_id | tweed_id

user_id的位置 - 来自' user_table'的id和" tweet_id'这是' id'来自tweettable

user_id | tweet_name

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

$strDetails = json_encode($twitter_details)

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