Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
从已加入(1到多个)的postgresql接收1行_Sql_Postgresql_One To Many_Postgresql 9.1 - Fatal编程技术网

从已加入(1到多个)的postgresql接收1行

从已加入(1到多个)的postgresql接收1行,sql,postgresql,one-to-many,postgresql-9.1,Sql,Postgresql,One To Many,Postgresql 9.1,我有一个问题: 我有两个主要的表公寓,租户有一个连接到多个1公寓,多个租户。 我想把我所有的公寓都搬走,但他有一个房客。 首选租户是ot=2的租户。有两个可能的值:1或2。 我尝试使用子查询,但在postgresql中,它不允许返回超过1列。 我不知道怎么解决它。这是我的最新代码: SELECT a.apartment_id, a.apartment_num, a.floor, at.app_type_desc_he, tn.otype_desc_he, tn.e_name FROM pu

我有一个问题:

我有两个主要的表公寓,租户有一个连接到多个1公寓,多个租户。 我想把我所有的公寓都搬走,但他有一个房客。 首选租户是ot=2的租户。有两个可能的值:1或2。 我尝试使用子查询,但在postgresql中,它不允许返回超过1列。 我不知道怎么解决它。这是我的最新代码:
SELECT a.apartment_id, a.apartment_num, a.floor, at.app_type_desc_he, tn.otype_desc_he, tn.e_name
FROM 
  public.apartments a INNER JOIN public.apartment_types at ON
  at.app_type_id = a.apartment_type INNER JOIN 
    (select t.apartment_id, t.building_id, ot.otype_id, ot.otype_desc_he, e.e_name
     from   public.tenants t INNER JOIN public.ownership_types ot ON
        ot.otype_id = t.ownership_type INNER JOIN entities e ON
        t.entity_id = e.entity_id
     ) tn ON
  a.apartment_id = tn.apartment_id AND tn.building_id = a.building_id
WHERE 
  a.building_id = 4 AND tn.building_id=4
ORDER BY
  a.apartment_num ASC, 
  tn.otype_id DESC
Thanx提前

选择a.partment\u id、a.partment\u num、a.floor ,at.app_type_desc_he,tn.otype_desc he,tn.e_name 来自公共公寓a 在ON.app\u type\u id=a.partment\u type上加入public.partment\u type 左连接 选择t.公寓id、t.建筑id、ot.类型id ,ot.otype_desc_he,e.e_name 来自公共租客 在ot.otype\u id=t.ownership\u type上加入public.ownership\u类型ot 在t.entity\u id=e.entity\u id上连接实体e 按ot订购。otype_id=2说明 限制1 tn在tn公寓id上,tn建筑id=a公寓id,a建筑id 其中a.building_id=4 和tn.building_id=4 a.公寓的订单数量;-,tn.otype_id DESC-无意义

重点强调了关键部分

这两种情况都适用

如果一套公寓有租户,则将返还1人。 如果有一个或多个ot.otype_id=2的租户,则该租户将属于该类型。 如果没有租户,公寓仍然会被归还。 如果,对于ot.otype\u id

有两个可能的值:1或2

。。。您可以简化为:

按ot.otype\U id说明订购 调试查询 尝试从基本查询中删除WHERE子句并进行更改

加入公共公寓类型 到

左连接公共公寓类型 然后逐个将它们添加回去,以查看哪个条件排除所有行


at.app\u type\u id和a.partment\u type真的匹配吗?

请包括表的定义和一些示例数据。感谢您的快速回复。我试过了你的提议,但一点结果也没有。我确实找到了ROWselect的工作。不幸的是,我没有成功地用PHP提取数据。有什么知识吗?@user1488098:我添加了一些调试指针。这应该很简单,但对于没有充分了解情况的局外人来说,这只是猜测。@user1488098:如果您提供语句来构造表并加载足够的样本数据进行测试,那么对于那些试图提供帮助的人来说,这真的会让事情变得容易得多。没有it,人们需要做更多的工作,可能需要做出一些偏离目标的猜测,从而降低他们为您提供所需内容的能力。