дилемма базы данных

У меня есть база данных, состоящая из следующих таблиц:

SourcesA:  source, country, language

SourcesB:  id, url, source

Сначала мне нужно создать новую таблицу. (Table1) и вставьте объединение двух таблиц, где источник совпадает.

Вторая таблица (Таблица2) должна содержать записи, которые не совпадают.

Третья операция (Таблица3) - взять первую таблицу и найти все записи, которые имеют соответствующие URL-адреса со второй таблицей.

Любые идеи приветствуется

1
задан marc_s 27 August 2010 в 07:51
поделиться

2 ответа

Возможно, вы не захотите создавать новые таблицы, данные уже есть в базе данных. Вам просто нужны новые методы для просмотра этих данных. Попробуйте их, они также могут быть превращены в представления, если они вам нужны в качестве постоянного решения. Если есть реальная причина дублировать данные в базе данных, вы также можете использовать их для вставки во вновь созданные таблицы.

--result set/table 1
SELECT
  B.id,
  B.source,
  B.url,
  A.country,
  A.language
FROM SourcesA A
  JOIN SourcesB B 
    ON A.source = B.source

--result set/table 2  
SELECT
  'SourcesA',
  B.id,
  B.source,
  B.url,
  A.country,
  A.language
FROM SourcesA A
  LEFT JOIN SourcesB B 
    ON A.source = B.source
WHERE B.source IS NULL
UNION ALL
SELECT
  'SourcesA',
  B.id,
  B.source,
  B.url,
  A.country,
  A.language
FROM SourcesB B
  LEFT JOIN SourcesA A 
    ON B.source = A.source
WHERE A.source IS NULL

--result set/table 3
SELECT
* --being lazy here
FROM
  (
    SELECT
      B.id,
      B.source,
      B.url,
      A.country,
      A.language
    FROM SourcesA A
      JOIN SourcesB B 
        ON A.source = B.source
  ) T1
  JOIN      
  (  
    SELECT
      'SourcesA',
      B.id,
      B.source,
      B.url,
      A.country,
      A.language
    FROM SourcesA A
      LEFT JOIN SourcesB B 
        ON A.source = B.source
    WHERE B.source IS NULL
    UNION ALL
    SELECT
      'SourcesA',
      B.id,
      B.source,
      B.url,
      A.country,
      A.language
    FROM SourcesB B
      LEFT JOIN SourcesA A 
        ON B.source = A.source
    WHERE A.source IS NULL
  ) T2
    ON T1.url = T2.url
1
ответ дан 2 September 2019 в 21:50
поделиться

Я бы посмотрел на использование представлений. Они представляют собой нечто среднее между наборами результатов и реальными таблицами. Поскольку все ваши данные в этих трех «таблицах» зависят от фактических данных в таблицах, это идеальное место для использования представлений.

http://www.codeproject.com/KB/database/View.aspx http://odetocode.com/Articles/299.aspx http://www.informit.com/articles /article.aspx?p=130855

1
ответ дан 2 September 2019 в 21:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: