我在接受采访时被要求在C语言中实现SQL Left outer join。任何想法,输入我如何实现它。谢谢。
Input :
A
1,A,X
2,B,Y
B
2,M
3,N
Output of Left Outer Join between A and B is as below.
1,A,X,
2,B,Y,M
#include<stdio.h>
void main()
{
char A[10][3] = { {1,A,X},{2,B,Y} };
char B[10][2] = { {2,M} , {3,N} };
for ( int i=0; i<2;i++ )
{
for(int j=0; j<2; j++ )
{
if( A[i][0] == B[j][0])
printf("%c\t%c\t%c\t%c",A[i][0],A[i][1],A[i][2],B[i][1]);
else
printf("%c\t%c\t%c\t",A[i][0],A[i][1],A[i][2]);
}
}
}
此致 SOAddict
答案 0 :(得分:1)
你可以为第一个表中的键值创建一个哈希并保存它的索引,然后你迭代第二个表键值,然后在哈希中存在一个键然后你将转到那个索引并合并。
答案 1 :(得分:0)
LEFT OUTER JOIN的概念是指一个集合操作,您输出“左”集的所有元素,并且还尝试使用匹配标准(通常是主要标准)通过匹配元素从“右”集输出匹配元素和外键)。
您可以创建此类data structure in C。为了参数,我们假设每个set元素由一个名为Id的整数唯一标识。
编写从“left”集输出每个元素(“row”)的代码,并尝试使用Id从右侧集合中查找匹配元素。如果找到它,也在该输出行中输出该元素。如果没有,输出表示不匹配的内容(SQL使用NULL)。
HashSet是一种用于Ids的高效数据结构,但也有其他可能性。