Public feed #380508

Miscellany

public text v1 · immutable
Raw Edit
·published 2007-03-04 03:20 UTC
rendered paste body
I've got two tables:

Table1:
+---------+----------+
| Name    | Color    |
+---------+----------+
| Fruit   | Many     |
| Apple   | Green    |
| Orange  | Orange   |
| Drink   | Varies   |
| Beer    | Brown    |
| Cola    | Black    |
| Bread   | Assorted |
+---------+----------+

Table2:
+---------+-------+
| Name    | Type  |
+---------+-------+
| Apple   | Fruit |
| Orange  | Fruit |
| Beer    | Drink |
| Cola    | Drink |
+---------+-------+

Now I am trying to get all of the same type as a given name. For example if I do a select on Apple, Orange or Fruit I want returned
Return list 1:
+---------+-------+--------+
| Name    | Type  | Color  |
+---------+-------+--------+
| Apple   | Fruit | Green  |
| Orange  | Fruit | Orange |
| Fruit   | Fruit | Many   |
+---------+-------+--------+

And if I do a select on Dring, Beer or Cola I want returned

Return list 2:
+---------+-------+--------+
| Name    | Type  | Color  |
+---------+-------+--------+
| Drink   | Drink | Varies |
| Beer    | Drink | Brown  |
| Cola    | Drink | Black  |
+---------+-------+--------+

Note that Table2.Type will always have exactly 1 corresponding entry in Table1.Name 
But there might exist entries Table1.Name that does _not_ exist in Table2.Name nor in Table2.Type. These should only return 1 row like

Return list 3:
+---------+-------+----------+
| Name    | Type  | Color    |
+---------+-------+----------+
| Bread   | NULL  | Assorted |
+---------+-------+----------+


I have tried subselects in where clauses and joins left, right and inner but I can't get it right.

The closest I got was:

+---------+-------+--------+
| Name    | Type  | Color  |
+---------+-------+--------+
| Drink   | Drink | Many   |
| Drink   | Drink | Brown  |
| Drink   | Drink | Black  |
+---------+-------+--------+

Which is close, but no sigar.