Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从字段值与另一个字段值相同的表中选择值_Sql_Sql Server - Fatal编程技术网

Sql 从字段值与另一个字段值相同的表中选择值

Sql 从字段值与另一个字段值相同的表中选择值,sql,sql-server,Sql,Sql Server,表中有以下列:FDA_ID和FDA_ID_PARENT以及以下数据集: FDA_ID | FDA_ID_PARENT 771 | NULL 772 | 771 773 | 771 774 | 0 775 | NULL 776 | 775 777 | NULL 我有FDA_ID=773作为输入数据,希望将这些数据“链接”到它 我所说的链接是指那些FDA_ID与FDA_ID=773的FDA_ID父母拥有相同的FD

表中有以下列:FDA_ID和FDA_ID_PARENT以及以下数据集:

FDA_ID  | FDA_ID_PARENT
 771    |   NULL
 772    |   771
 773    |   771
 774    |   0
 775    |   NULL
 776    |   775
 777    |   NULL
我有FDA_ID=773作为输入数据,希望将这些数据“链接”到它

我所说的链接是指那些FDA_ID与FDA_ID=773的FDA_ID父母拥有相同的FDA_ID 以及那些与FDA\u ID=773的FDA\u ID\u父代具有相同FDA\u ID\u父代的患者

因此,在FDA_ID=773的情况下,查询将返回 FDA_ID=771、772和773

我尝试了以下查询,但不起作用:

select *
from FDA_TABLE FDA
where 
FDA.FDA_ID = 773
or 
FDA.FDA_ID in (select FDA_ID from FDA_TABLE where FDA_ID_PARENT = FDA.FDA_ID_PARENT);

有什么帮助吗?

您的
WHERE
子句的第二部分返回所有具有父集合的行

FDA.FDA_ID in (select FDA_ID from FDA_TABLE where FDA_ID_PARENT = FDA.FDA_ID_PARENT)
您可能希望使用以下内容(或其任何部分):


那么你真的想要两个选择

  • 您需要给定FDA_ID 773的父项
  • 你想要所有的FDA ID都有相同的父母
  • 我建议使用工会

    (select FDA_ID_PARENT from FDA_TABLE where FDA_ID=773)
    union all
    (select FDA_ID from FDA_TABLE where FDA_ID_PARENT=(select FDA_ID_PARENT from FDA_TABLE where FDA_ID=773))
    

    您可以这样做:

    select * 
    from FDA_TABLE
    where coalesce((select FDA_ID_PARENT from FDA_TABLE where FDA_ID = 773), 0) 
          in (FDA_ID, coalesce(FDA_ID_PARENT, 0))
    
    如果
    FDA\u ID\u PARENT=0
    FDA\u ID\u PARENT=NULL
    不同,则将
    coalesce()
    中的
    0
    s更改为类似
    -1
    的值,该值在
    FDA\u ID\u PARENT
    列中无效
    请参阅。
    结果:


    您的问题不清楚,请提供样本数据和output@ZaynulAbadinTuhin当前位置我不理解你的评论。我确实提供了一个示例数据,并给出了一个基于给定输入的输出示例。谢谢。如果772有“孩子”或771有“父母”呢?或者您的数据仅限于父母和子女(而不是孙子女/父母等)?@JMabee:在OP的示例数据中,给定773的parentID是771。在第二个查询中,我需要parentID中包含这个771的所有行的FDA_ID,它应该给我772和773。
    select * 
    from FDA_TABLE
    where coalesce((select FDA_ID_PARENT from FDA_TABLE where FDA_ID = 773), 0) 
          in (FDA_ID, coalesce(FDA_ID_PARENT, 0))
    
    > FDA_ID | FDA_ID_PARENT
    > -----: | :------------
    >    771 | null         
    >    772 | 771          
    >    773 | 771