Php SQL笛卡尔选择框
我有一个PHP表单,它使用几个由查找表填充的选择框。为了减少每页的查询数量,我试图找到一种创建笛卡尔乘积的方法,该乘积将输出如下结果:Php SQL笛卡尔选择框,php,mysql,Php,Mysql,我有一个PHP表单,它使用几个由查找表填充的选择框。为了减少每页的查询数量,我试图找到一种创建笛卡尔乘积的方法,该乘积将输出如下结果: ----------------------------------------------------------------- | City | State | SchoolDistrict | --------------------------------------------------
-----------------------------------------------------------------
| City | State | SchoolDistrict |
-----------------------------------------------------------------
| Adamsville | AL | Adamsville Public Schools |
| Brownsville | AK | Baker-Cow USD |
| Cowtown | AR | NULL |
| NULL | AZ | NULL |
| NULL | CA | NULL |
-----------------------------------------------------------------
然后我可以循环遍历每个字段,直到它找到null(或0长度的字符串)
当我尝试时:
SELECT a.City, b.State, c.SchoolDistrict FROM Cities a, State b, SchoolDistricts c
它返回:
-----------------------------------------------------------------
| City | State | SchoolDistrict |
-----------------------------------------------------------------
| Adamsville | AL | Adamsville Public Schools |
| Brownsville | AK | Baker-Cow USD |
| Cowtown | AR | Baker-Cow USD |
| Cowtown | AZ | Baker-Cow USD |
| Cowtown | CA | Baker-Cow USD |
-----------------------------------------------------------------
有什么想法吗?我想出的一个解决办法是
SELECT a.City, "City" type from Cities a
UNION ALL
SELECT b.State, "State" from States b
UNION ALL
SELECT c.SchoolDistrict, "SchoolDistrict" from SchoolDistricts c
这将是一个查询,您可以检查第二列的值并执行必要的操作。原始表是什么样子的,它们是如何连接的?基本上,它们只是具有上面列出的值的单列。这实际上比我最初设想的解决方案简单得多。只需要一个简单的开关。如果可以的话,我会投更多的票。谢谢