На самом деле это должны быть не две отдельные таблицы, а одна таблица со столбцом идентификации компании.
Однако ваша ситуация может быть решена хакерским путем:
SELECT
'Company A' AS Company,
Date,
CASE
WHEN Prize_1 = 'iphone4' THEN 'Prize_1'
WHEN Prize_2 = 'iphone4' THEN 'Prize_2'
WHEN Prize_3 = 'iphone4' THEN 'Prize_3'
WHEN Prize_Consolation = 'iphone4' THEN 'Prize_Consolation'
ELSE NULL
END AS Prize
FROM `Company A`
WHERE
Prize_1 = 'iphone4'
OR Prize_2 = 'iphone4'
OR Prize_3 = 'iphone4'
OR Prize_Consolation = 'iphone4'
/* UNION performs the same query against both tables and combine the results */
UNION
SELECT
'Company B' AS Company,
Date,
CASE
WHEN Prize_1 = 'iphone4' THEN 'Prize_1'
WHEN Prize_2 = 'iphone4' THEN 'Prize_2'
WHEN Prize_3 = 'iphone4' THEN 'Prize_3'
WHEN Prize_Consolation = 'iphone4' THEN 'Prize_Consolation'
ELSE NULL
END AS Prize
ОТ Company B
WHERE Prize_1 = 'iphone4' ИЛИ Prize_2 = 'iphone4' ИЛИ Prize_3 = 'iphone4' ИЛИ Prize_Consolation = 'iphone4'
Более подходящий макет таблицы для этого дизайна будет выглядеть следующим образом:
Table Prizes
---------------
id INT AUTO_INCREMENT,
Date DATETIME,
Company VARCHAR(256),
Prize_Type INT,
Prize_Item VARCHAR(256)
Table Prize_Types
---------------
Prize_Type INT AUTO_INCREMENT PRIMARY KEY,
Prize_Description VARCHAR(32)
Призы
1 | 2012-01-28 08:00:00 | 'Company A' | 3 | 'some prize'
2 | 2012-01-28 08:00:00 | 'Company A' | 2 | 'ipad'
3 | 2012-01-28 08:00:00 | 'Company A' | 1 | 'junky phone'
4 | 2012-01-28 08:00:00 | 'Company b' | 4 | 'iphone4'
Prize_Types
1 | 'Prize 1'
2 | 'Prize 2'
3 | 'Prize 3'
4 | 'Consolation Prize'
Запросите это как:
SELECT
Company,
Date,
Prize_Item,
Prize_Description
FROM Prizes JOIN Prize_Types ON Prize_Types.Prize_Type = Prizes.Prize_Type
WHERE Prize_Item = 'iphone4'
Фактически, вы также можете захотеть, чтобы компании и призовые предметы были нормализованы вих собственные таблицы, такие как Prize_Types.