选择与另一个表外键

时间:2017-12-10 12:24:49

标签: mysql select

我有一个有机构的桌子和一张有员工的桌子,每个员工都有一个外键,指向相应机构的主键。有男子机构,妇女机构和混合机构。

我正在尝试选择显示至少有2名女性的所有机构。我可以展示所有有妇女的机构,但我不能展示至少有2名妇女的机构。我使用idNumber来选择女性,如下面的代码

select idInst,nameInst 
from tblInst 
WHERE idInst IN (SELECT idInst 
                 FROM tblEmployees 
                 WHERE idNr>=1999999999999); 

这将显示所有妇女所在的机构,但不是所有至少有2名女性的机构。 我需要以某种方式为每个机构计算女性,但我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:0)

使用Having子句,您可以实现此目的:

#include <stdlib.h> /* for malloc() and  EXIT_xxx macros */
#include <stdio.h> /* for perror() */
#include <string.h> /* for strchr() and strtok() */
#include <sys/types.h>
#include <unistd.h>

int main(void)
{
  int result = EXIT_SUCCESS;

  char input[] = "Lorem ipsum dolor sit amet";
  size_t words = 0;

  {
    char * pc = input;
    while ((pc = strchr(pc, ' ')))
    {
      ++pc;

      if (!*pc && *pc != *(pc - 1)) /* Skip successive blanks. */
      {
        ++words;
      }
    }
  }

  {
    char ** ppc = malloc((words + 1) * sizeof *ppc);
    if (NULL == ppc)
    {
      perror("malloc() failed");
      exit(EXIT_FAILURE);
    }

    {
      size_t i = 0;
      ppc[i] = strtok(input, " ");

      while (NULL != (ppc[++i] = strtok(NULL, " ")));
    }

    {
      pid_t pid = fork();
      if (-1 == pid)
      {
        perror("fork() failed");
        exit(EXIT_FAILURE);
      }

      if (0 == pid)
      {
        execvp(ppc[0], ppc);
        perror("execvp() failed");
        result = EXIT_FAILURE;
      }
    }

    free(ppc);
  }

  return result;
}