I want to LEFT JOIN two tables with the same column name. I have two tables which I am trying to join but I keep getting an error:
column 'id' is ambiguous
returned in my JSON output.
My current query:
$sQuery = "
SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
FROM $sTable
LEFT JOIN
$sTable2
ON ($sTable2.id = $sTable.id)
$sWhere
$sOrder
$sLimit
";
Produces that error. How can I join these two tables as the join point when there is the same column name in each table?
Be explicit about which table the column belongs to. This also applies to the SELECT part of the query:
SELECT table1.column AS column1, table2.column AS column2
FROM table1
LEFT JOIN table2
ON table1.column = table2.column
To save you some typing time, use table aliases:
SELECT t1.column AS column1, t2.column AS column2
FROM table1 AS t1
LEFT JOIN table2 AS t2
ON t1.column = t2.column
The ambiguity is probably in the select, not in the join. The join looks OK. $aColumns probably contains "id" without table name specification or something.
The LEFT JOIN keyword returns all rows from the left table (table_name1),
even if there are no matches in the right table (table_name2).
In your case, both table1 and table 2 are same. So There might be no benefit of doing Left Join because ultimately all the rows will be returned. You might wanna use Inner Join.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With