a*********3 发帖数: 23 | 1 今天onsite的题目。
题目是给一个table,名字叫location,存的是自己的ID,还有name,还有parentID(
城市的话就是state,state的parent是国家)
例子是
ID NAME ParentID
1 AUSTIN TX
2 DALLAS TX
US United States null
TX Texus US
然后面试官希望得到结果是
US
TX
AUSTIN
DALLAS
请问sql怎么写,另外国家有很多,state也会有很多
后来又接着问,如果国家的行政划分不止三个,又该怎么做,当然这个没让写。 |
l*********8 发帖数: 4642 | 2 有多个国家的时候,怎么输出?
【在 a*********3 的大作中提到】 : 今天onsite的题目。 : 题目是给一个table,名字叫location,存的是自己的ID,还有name,还有parentID( : 城市的话就是state,state的parent是国家) : 例子是 : ID NAME ParentID : 1 AUSTIN TX : 2 DALLAS TX : US United States null : TX Texus US : 然后面试官希望得到结果是
|
a*********3 发帖数: 23 | 3 不会做啊。。。第一问就用了好几个nested query
【在 l*********8 的大作中提到】 : 有多个国家的时候,怎么输出?
|
a*********3 发帖数: 23 | 4 就是先按国家顺序输出,每个国家下面有state,state下面有city
比如
US
TX
AUSTIN
DALLAS
CHINA
JIANGSU
NANJING
SUZHOU
【在 l*********8 的大作中提到】 : 有多个国家的时候,怎么输出?
|
c*****u 发帖数: 562 | 5 生成这样可吗?
US TX Austin
US TX DALLAS
CHINA JIANSU NANJING
如果可以话,做几重left join可以了吧?
SELECT T1.NAME AS Country, T2.NAME AS PROV, T3.NAME AS CITY
FROM T T1
LEFT JOIN T T2 ON T2.ParentID = T1.ID
LEFT JOIN T T3 ON T3.ParentID = T2.ID
WHERE T1.ParentID IS NULL
如果再加级别,就再加join好了
【在 a*********3 的大作中提到】 : 就是先按国家顺序输出,每个国家下面有state,state下面有city : 比如 : US : TX : AUSTIN : DALLAS : CHINA : JIANGSU : NANJING : SUZHOU
|
a*********3 发帖数: 23 | 6 我给他的答案就是这么个结果,但是似乎他想要的是我之前给出的形式。
后来他有问how do you know how many level you have?
我说dfs看有几层,但是似乎他不满意的样子。
【在 c*****u 的大作中提到】 : 生成这样可吗? : US TX Austin : US TX DALLAS : CHINA JIANSU NANJING : 如果可以话,做几重left join可以了吧? : SELECT T1.NAME AS Country, T2.NAME AS PROV, T3.NAME AS CITY : FROM T T1 : LEFT JOIN T T2 ON T2.ParentID = T1.ID : LEFT JOIN T T3 ON T3.ParentID = T2.ID : WHERE T1.ParentID IS NULL
|
d********g 发帖数: 10550 | 7 是什么职位?这种nested的结构要减少查询次数这样设计本身就不合理,你给他说这个
table设计得不行,要用MPTT,他估计要尿了
【在 a*********3 的大作中提到】 : 今天onsite的题目。 : 题目是给一个table,名字叫location,存的是自己的ID,还有name,还有parentID( : 城市的话就是state,state的parent是国家) : 例子是 : ID NAME ParentID : 1 AUSTIN TX : 2 DALLAS TX : US United States null : TX Texus US : 然后面试官希望得到结果是
|
n******h 发帖数: 2482 | 8 If knew 3 levels, (T1 union (T1 left join T2) union (T1 left join T2 left
join T3) order by T1.id
If number of levels is unknown, use hierarchical queries. It's non-sql-92
and db-specific. Oracle has it. Bad interview question in my opinion.
【在 a*********3 的大作中提到】 : 我给他的答案就是这么个结果,但是似乎他想要的是我之前给出的形式。 : 后来他有问how do you know how many level you have? : 我说dfs看有几层,但是似乎他不满意的样子。
|
a*********3 发帖数: 23 | 9 BB的FAE
【在 d********g 的大作中提到】 : 是什么职位?这种nested的结构要减少查询次数这样设计本身就不合理,你给他说这个 : table设计得不行,要用MPTT,他估计要尿了
|
c********t 发帖数: 5706 | 10 用connect by。
【在 a*********3 的大作中提到】 : 今天onsite的题目。 : 题目是给一个table,名字叫location,存的是自己的ID,还有name,还有parentID( : 城市的话就是state,state的parent是国家) : 例子是 : ID NAME ParentID : 1 AUSTIN TX : 2 DALLAS TX : US United States null : TX Texus US : 然后面试官希望得到结果是
|
a*********3 发帖数: 23 | 11 谢谢了,这个从来没用过,老师上课也没有讲过,真的不知道。。。
【在 c********t 的大作中提到】 : 用connect by。
|