【问题标题】:How to implement Left Outer Join in C languageC语言如何实现左外连接
【发布时间】:2015-02-20 03:01:09
【问题描述】:

我在一次采访中被要求用 C 语言实现 SQL 左外连接。任何想法,输入如何实现它。谢谢。

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

【问题讨论】:

  • 请分享你的想法,伙计们..不要投反对票...
  • 我认为迟早会涉及到代码。至少我会这样做。考虑需要什么,编写算法,编写匹配代码,如果车轮在某处掉下来,请在此处提出具体问题。
  • 听起来好像有人误会了。 C没有连接,内部外部或其他。但是在 C 中,您可以调用数据库。所以也许他们的意思是问'你如何从 C 中对这个 RDBMS 进行左外连接'
  • @Karl:SQL 数据库是用某种编程语言编写的,在很多情况下可能是 C 或 C++。问题似乎是关于如何在 C 中实现这种类型的集合操作。
  • 有一些算法可以找到公共子集(也就是 SQL 内连接),你可以从那里开始

标签: sql c data-structures


【解决方案1】:

您可以为第一个表中的键值创建一个散列并保存它的索引,然后迭代第二个表键值并且在散列中存在一个键,然后您将转到该索引并合并。

【讨论】:

    【解决方案2】:

    LEFT OUTER JOIN 的概念是指一种集合操作,其中您输出“左”集合的所有元素,并另外尝试使用匹配条件(通常是主和外键)。

    您可以创建这种类型的data structure in C。为了便于论证,假设每个集合元素都由一个称为 Id 的整数唯一标识。

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

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

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多