2016-01-01 50 views
1

我目前面临的问题是,当我连接两个具有相同名称的列的表时,试图获取值,例如: table1.date和table2.date(日期在每个表中是不同的)在这种情况下,我将如何获得表1的“日期”。 我目前正在运行如何在一个sql连接中存在两列同名的数据时从一个表列中获取值

while($row = $mysqliquery->fetch_object()) { 

是有,我可以使用某种形式的语法来检索以下代码中从表1日起

$row->date eg $row->table1.date or something 

如果不是我怎么回事,就能够以任何方式完成这个? 谢谢。

+1

每个应该给一个别名 - 或者他们中的至少一个应该(日期是一个speshul词) – RamRaider

+0

所以喜欢从表1中选择作为t – Malcolm

+0

,然后使用$ row-> t.date – Malcolm

回答

3

应该通过这样的

SELECT a.`date`, b.`date` as b_date 
FROM table1 a 
    JOIN table2 b ON a.id = b.a_id 
WHERE some specific criteria 

现在查询使用别名为一个或两个2列的2列具有相同名称的区分,当您检索该行各date都有自己独特的命名即

$row->date; 
$row->b_date; 
+0

你打败我吧 – RamRaider

+1

@RamRaider伟大的思想一样 – RiggsFolly

2

我正沿着这个(虚构)的线伪SQL

select a.`account_id`, a.`date` as 'account_date', u.`date` as 'signup_date' 
from `accounts` a 
left outer join `users` u on u.`uid`=a.`uid` 
思维更

每个表都有一个名为date的列,但在sql中它们每个都被引用一个唯一的别名。你不能在同一个查询中有两个同名的列,否则你会得到错误,所以你给他们一个别名。这些表格在此代码中也有别名 - 它确实有助于简化我认为的事情......无论如何,只是一个快速示例来说明如何处理此问题 - 其他人可能会采用不同的方法从中学习新的技巧

相关问题