thanks a lot for your posting,

[cut]
Posted by Fred Mitchell on December 11 2004 2:47pm      [Delete] [Edit]

Let's say you are doing a LEFT JOIN with a table that shares a column
name in common with another table, and that you are selecting for
instances where the join is missing, that is IS NULL.

Normally, the common column name is "wiped out" by the null record, but
here is a workaround for it: You simply alias that common column name in
the select. For instance,

CREATE TABLE t1 (INT id NOT NULL, ....);
CREATE TABLE t2 (INT id NOT NULL, ....);
...
SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id
WHERE t2.id IS NULL;

would result in the column 'id' being null on each selected row.
Instead, you can do:

SELECT *, t1.id AS id FROM t1 LEFT JOIN t2 ON t1.id = t2.id
WHERE t2.id IS NULL;

And now the 'id' column will be preserved since the alias is evaluated
*after* the LEFT JOIN.
[/cut]

pay attention to: ->      *, t1.id      <-

cheers,
        cajbecu

Jay Blanchard wrote:
> [snip]
> $sql = "SELECT * FROM `table1` LEFT JOIN `table2` USING `id` WHERE ...
> GROUP BY `table1`.`id`";
> 
> mysql_query($sql);
> 
> the problem is, that, when in table2 is not matching data using that id,
> i lose that id from output array. but i don`t want to.. is there any
> posibility to keep that id?
> [/snip]
> 
> More of a mysql question but do a left outer join with no group by
> statement.
> 
> SELECT table2.* 
> FROM table1 LEFT OUTER JOIN table2 
> ON(table1.id = table2.id)
> WHERE table1.id IS NULL  
> 
> 
> Returns all of table2 id's where there is no id in table1
> 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to