我有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列中的嵌套表?
答案 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
插入数据库