Połącz dwie tabele w nową, aby wybrane wiersze z drugiej były ignorowane

Mam dwie tabele, które mają identyczne kolumny. Chciałbym połączyć te dwie tabele w jedną trzecią, która zawiera wszystkie wiersze z pierwszego, a z drugiej wszystkie wiersze, które mają datę, która nie istnieje w pierwszej tabeli dla tej samej lokalizacji.

Przykład:

transakcje:

date    |location_code| product_code | quantity 
------------+------------------+--------------+----------
2013-01-20 | ABC         | 123          |  -20         
2013-01-23 | ABC         | 123          |  -13.158
2013-02-04 | BCD         | 234          |  -4.063

transakcje2:

date    |location_code| product_code | quantity 
------------+------------------+--------------+----------
 2013-01-20 | BDE         | 123          |  -30         
 2013-01-23 | DCF         | 123          |  -2
 2013-02-05 | UXJ         | 234          |  -6

Pożądany rezultat:

date    |location_code| product_code | quantity 
------------+------------------+--------------+----------
 2013-01-20 | ABC         | 123          |  -20         
 2013-01-23 | ABC         | 123          |  -13.158
 2013-01-23 | DCF         | 123          |  -2
 2013-02-04 | BCD         | 234          |  -4.063
 2013-02-05 | UXJ         | 234          |  -6

Jak bym to zrobił? Próbowałem na przykład tego:

SELECT date, location_code, product_code, type, quantity, location_type, updated_at
      ,period_start_date, period_end_date
   INTO transactions_combined
   FROM ( SELECT * FROM transactions_kitchen k
          UNION ALL
          SELECT *
            FROM transactions_admin h
            WHERE h.date NOT IN (SELECT k.date FROM k)
        ) AS t;

ale to nie bierze pod uwagę, że chciałbym uwzględnić wiersze, które mają tę samą datę, ale inną lokalizację. Używam Postgresql 9.2.

questionAnswers(2)

yourAnswerToTheQuestion