MySQL子查询在3个表上返回超过1行

MySQL子查询在3个表上返回超过1行,mysql,Mysql,我已经从1个数据库连接了2个表,我想添加另一个表“myhospital.hosp_bill_etc”,我得到了一个错误 子查询返回多个行 请有人告诉我如何解决这个问题。正如您所说的,您显然是查询新手,这需要实践。从学习表之间的关系开始,在不重复查询的情况下直接连接(或左连接)。因此,患者信息应该是给定“患者id”的单个记录。表之间的联接需要确定它们之间的关系,否则将得到笛卡尔结果。注意我是如何通过“ON”命令显示各个表之间的关系的。为了便于阅读,请注意我是如何直观地嵌套表关系的,例如从账单到账单

我已经从1个数据库连接了2个表,我想添加另一个表“myhospital.hosp_bill_etc”,我得到了一个错误


子查询返回多个行


请有人告诉我如何解决这个问题。

正如您所说的,您显然是查询新手,这需要实践。从学习表之间的关系开始,在不重复查询的情况下直接连接(或左连接)。因此,患者信息应该是给定“患者id”的单个记录。表之间的联接需要确定它们之间的关系,否则将得到笛卡尔结果。注意我是如何通过“ON”命令显示各个表之间的关系的。为了便于阅读,请注意我是如何直观地嵌套表关系的,例如从账单到账单医疗到hosp服务,以及用户等

现在,您可以通过简单的别名从字段选择列表中的相应表中获取任何列。。。无论如何,希望能对你有所帮助。。。另外,我不知道你为什么要把费用、数量、价格作为角色。通常,输出到将在那里格式化的内容,并保持原始值不变

这是表的关系,但现在它将返回所有患者的所有条目。如果您想为特定的账单或患者添加内容,您可以为该特定组件添加WHERE子句

现在,账单似乎总是给一个病人的。 比尔有很多药。 我认为每个med都有一个单一的服务,但如果一个med可以有多个,那么您将得到重复的服务。 此外,对于每个med,我希望有一个人与记录/分发med的人相关

最后是你的“账单等”。如果这有多行,也可能导致笛卡尔结果


希望这是一个基于您的数据环境的良好开端,而不是太多的泛型,您可能不得不绞尽脑汁,但请多阅读一些SQL实践。

“子查询返回的行数超过1行”——这不是不言自明的吗?请尝试在子查询中使用。我对这种编码不熟悉。。请告诉我哪里出了问题,我应该使用什么解决方案?:(@BryLe-Christopher-Romualdo-Tio:嗯,您的子查询必须只返回一行(否则您将如何将其放入单个值)@Edper:…或者您可以只编写一个有意义的查询!
SELECT b.bill_no, b.case_no, b.patient_id,
(Select (lastname) from myhospital.patient p where p.patient_id = b.patient_id) as l_name,
(Select (givenname) from myhospital.patient p where p.patient_id = b.patient_id) as f_name,
(Select (middle) from myhospital.patient p where p.patient_id = b.patient_id) as m_name,
(select (address_street) from myhospital.patient p where
p.patient_id = b.patient_id) as adress, m. item_name,
(select cast(m.unit_price as Char(8))) as unit_price,
(select cast(m.qty as Char(8))) as quantity,
(select cast(m.charges as Char(8))) as charges,
m.date_rec, m.service_code,
(select (descript) from myhospital.hosp_services s where m.service_code = s.service_code) as Section,
(Select (fullname) from myhospital.users u where u.user_id = m.edit_by) as Encode_by,
(Select (descript) from myhospital.hosp_bill_etc c where b.bill_no = c.bill_no) as misc_edit
FROM myhospital.hosp_bill b join myhospital.hosp_bill_meds m
where b.bill_no = m.bill_no
SELECT 
      b.bill_no, 
      b.case_no, 
      b.patient_id,
      p.lastname as l_name,
      p.givenname as f_name,
      p.middle as m_name,
      p.address_street as address, 
      m. item_name,
      m.unit_price,
      m.qty as quantity,
      m.charges,
      m.date_rec, 
      m.service_code,
      s.descript as Section,
      u.fullname as Encode_by,
      c.descript as misc_edit
   FROM 
      myhospital.hosp_bill b 
         JOIN myhospital.patient p
            ON b.patient_id = p.patient_id

         JOIN myhospital.hosp_bill_meds m
            ON b.bill_no = m.bill_no
            JOIN myhospital.hosp_services s 
               ON m.service_code = s.service_code
            JOIN myhospital.users u 
               ON m.edit_by = u.user_id

         JOIN myhospital.hosp_bill_etc c 
            ON b.bill_no = c.bill_no