1
我有10个表。表中的1个就是“集线器”。其他用于识别特定的属性。集线器表包含每个ID,而其他表仅包含该表所需的ID。Mysql查询连接表,并选择只有非空行,并具有相同ID
我需要一个连接查询,它可以根据id连接到任何子表中的所有行,并且可以连接集线器表中的所有行。
因此,例如,如果集线器表中的某个行的ID为9,并且其中一个子表的ID为9,则应将它们连接起来。它不应该加入不存在的行,也不能包含空的列。我正在使用Zend-Framework将它们放在一起,但我很乐意接受有关如何在zend-framework或标准php/sql中执行此操作的建议。
这是我现在使用的一个例子,它不工作。此查询获取必要的信息,但也包含空行。除此之外,它会删除子表行中的id,这是我需要的。
$select = $this->db->select()
->from("widgets")
->joinLeft("widget_login", "widgets.id = widget_login.id")
->joinLeft("widget_admin", "widgets.id = widget_admin.id")
->joinLeft("widget_text", "widgets.id = widget_text.id")
->joinLeft("widget_image", "widgets.id = widget_image.id")
->joinLeft("widget_facebook", "widgets.id = widget_facebook.id")
->joinLeft("widget_twitter", "widgets.id = widget_twitter.id")
->joinLeft("widget_google", "widgets.id = widget_google.id");
追加一个WHERE语句可能是答案,但我不知道这是它。当我添加结果完全为空时,该语句的语法可能是错误的原因。 – Josh
您是否尝试运行由您自己编写的普通SQL查询(如您试图自动构建的查询)并查看它返回的内容?有时仅仅因为我们正在查询的数据中存在另一个逻辑错误/错误,返回'null'是正确的。 –