我有三个表:适配器,连接器,组件
我需要能够全部搜索它们以找到相应的零件号(part_num)
零件号是唯一的,因此我不必担心多个条目.
我使用GET在URL中查找部件号,将其设置为$num,然后执行SELECT
我发现我应该使用UNION,但是这三个表具有不同的列,并且在尝试执行选择时给我一个错误.在下面的示例中
Using UNION to find references from other tables
这是我的代码:
if(isset($_GET['num'])) {
$num = $_GET['num'];
$result = mysql_query("SELECT * FROM connectors WHERE part_num = '$num' UNION SELECT * FROM adapters WHERE part_num = '$num' UNION SELECT * FROM components WHERE part_num = '$num'"); }
任何帮助将不胜感激,所以在此先感谢SO =)
解决方法:
您可能应该有第四个表Parts,用于标识每个part_num已分配给哪个类型的表.但是,如果不这样做,您仍然可以通过外部联接获得所需的东西(虽然很浪费):
SELECT * FROM
connectors
LEFT JOIN adapters USING(part_num)
LEFT JOIN components USING(part_num)
WHERE
part_num = ?
注意我用过吗?因为您确实应该使用准备好的语句:如果您不知道为什么或它们是什么,请阅读大约Bobby Tables.
标签:mysql,php 来源: https://codeday.me/bug/20191201/2080532.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。