如何在C语言中实现Left Outer Join

时间:2015-02-20 03:01:10

标签: sql c data-structures

我在接受采访时被要求在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

2 个答案:

答案 0 :(得分:1)

你可以为第一个表中的键值创建一个哈希并保存它的索引,然后你迭代第二个表键值,然后在哈希中存在一个键然后你将转到那个索引并合并。

答案 1 :(得分:0)

LEFT OUTER JOIN的概念是指一个集合操作,您输出“左”集的所有元素,并且还尝试使用匹配标准(通常是主要标准)通过匹配元素从“右”集输出匹配元素和外键)。

您可以创建此类data structure in C。为了参数,我们假设每个set元素由一个名为Id的整数唯一标识。

编写从“left”集输出每个元素(“row”)的代码,并尝试使用Id从右侧集合中查找匹配元素。如果找到它,也在该输出行中输出该元素。如果没有,输出表示不匹配的内容(SQL使用NULL)。

HashSet是一种用于Ids的高效数据结构,但也有其他可能性。