Вы можете сделать это в двух запросах, возможно, легче читать таким образом.
Первый запрос - это то, что вы должны получить, чтобы получить максимальную высоту и ширину.
Затем вы можете выполнить второй запрос, который выглядит следующим образом:
SElECT primaryId FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId FROM primary_images
UNION
SELECT imgHeight, imgWidth, primaryId FROM secondary_images
) as union_table
WHERE imgWidth = [maxWidth] and imgHeight = [maxHeight];
Где [maxWidth]
и [maxHeight]
- это два значения, которые вы получаете из предыдущего запроса. Если они принадлежат одному и тому же идентификатору изображения, результат запроса будет больше нуля, в противном случае этот запрос не будет иметь результата.
Если вам нужно знать, какой идентификатор принадлежит какой таблице, вы можете создать искусственный столбец (например, источник), и ваш запрос будет выглядеть так:
SElECT primaryId, source FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId, 1 as source FROM primary_images
UNION
SELECT imgHeight, imgWidth, primaryId, 2 as source FROM secondary_images
) as union_table
WHERE imgWidth = [maxWidth] and imgHeight = [maxHeight];
Обратите внимание, что теперь существует искусственный столбец с именем source. Так что, если ваш результат запроса
primaryId source
4 1
4 2
5 2
Вы знаете, что imgId
4 из primary_images
, а также
primaryId
4,5 из secondary_images
соответствует максимальной высоте и максимальной ширине предыдущего запроса
И, наконец, если вы просто хотите узнать, есть ли изображение, которое соответствует или нет, согласно нашим комментариям и обсуждению ниже, вы можете сделать:
SElECT count(*) AS imgCount FROM (
SELECT imgHeight, imgWidth, imgId AS primaryId FROM primary_images
UNION ALL
SELECT imgHeight, imgWidth, primaryId FROM secondary_images
) as union_table
WHERE primaryId = $imgId and imgWidth = [maxWidth] and imgHeight = [maxHeight];
Где imgCount
будет нулем, если нет подходящего изображения или больше нуля, в противном случае