내 라이브 데이터베이스 (MariaDB)가 로컬 (MySQL)과 완전히 동일한 데이터를 가지고 있지만 다음 쿼리가 동일한 결과를 다른 순서로 반환하는 문제가 있습니다. 하지 SQL에서 최고의 그래서 나는) 미리 사과 것이다 :동일한 데이터베이스의 다른 결과
이SELECT
`products`.*
, CONCAT(`booking_inventory`.`year`, '-', LPAD(`booking_inventory`.`month`, 2, '00'), '-', LPAD(`booking_inventory`.`day`, 2, '00')) AS `order_date`
, `category_product`.`category_id` AS `pivot_category_id`
, `category_product`.`product_id` AS `pivot_product_id`
, `count_activate`.`active_count`
, IF(`count_activate`.`product_id` > 0, 0, 1) AS coming_soon
FROM
`products`
INNER JOIN
`category_product`
ON
`products`.`id` = `category_product`.`product_id`
LEFT JOIN
(
SELECT
inventory.*
FROM
inventory
INNER JOIN
`booking_inventory`
ON
`inventory`.`id` = `booking_inventory`.`inventory_id`
WHERE
CONCAT(`booking_inventory`.`year`, '-', LPAD(`booking_inventory`.`month`, 2, '00'), '-', LPAD(`booking_inventory`.`day`, 2, '00')) > NOW()
ORDER BY
DATE(CONCAT(`booking_inventory`.`year`, '-', LPAD(`booking_inventory`.`month`, 2, '00'), '-', LPAD(`booking_inventory`.`day`, 2, '00')))
)
AS
inventory
ON
`products`.`id` = `inventory`.`product_id`
INNER JOIN
`booking_inventory`
ON
`inventory`.`id` = `booking_inventory`.`inventory_id`
LEFT JOIN
(
SELECT
COUNT(inventory.id) AS active_count
, product_id
FROM
inventory
INNER JOIN
`booking_inventory`
ON
`inventory`.`id` = `booking_inventory`.`inventory_id`
WHERE
status_id = 1
AND
(
stock > 0
OR stock = -1
)
AND
CONCAT(`booking_inventory`.`year`, '-', LPAD(`booking_inventory`.`month`, 2, '00'), '-', LPAD(`booking_inventory`.`day`, 2, '00')) > NOW()
GROUP BY
product_id
)
AS
count_activate
ON
`count_activate`.`product_id` = `products`.`id`
WHERE
`category_product`.`category_id` = 2
AND EXISTS
(
SELECT
*
FROM
`sites`
INNER JOIN
`product_site`
ON
`sites`.`id` = `product_site`.`site_id`
WHERE
`product_site`.`product_id` = `products`.`id`
AND
`status_id` = 1
AND
`site_id` = 1
)
AND
`products`.`status_id` = 1
AND
CONCAT(`booking_inventory`.`year`, '-', LPAD(`booking_inventory`.`month`, 2, '00'), '-', LPAD(`booking_inventory`.`day`, 2, '00')) > NOW()
GROUP BY
`products`.`id`
ORDER BY
`coming_soon` ASC
, `order_date` ASC
LIMIT 100
OFFSET 0
사람이를 일으키는 원인을 말해 줄 수?
관련
편집 아래의 바보의 의견과 아래 투표, 매우 도움에 대한
감사 (왼쪽 ID를 외부 권리는 지역입니다) ... 약간 파기 후에, 나는 원인을 그러나 아직 응답 찾아 내지 않았다. 두 번째 JOIN (인벤토리)에서 날짜 순서가 동일한 결과를 반환하지 않습니다. 인벤토리 ID, 가격, SKU로 주문한 경우 로컬 및 외부 데이터에서 동일한 결과를 얻지 만 날짜를 사용하지는 않습니다. 이유를 아는 사람이 있습니까?
안부
큰 쿼리를 한 번 다시 정렬 할 수 없습니까? – Whencesoever
차이점을 보여주기 위해 몇 가지 샘플 출력을 제공 할 수 있습니까? mariadb 버전이 동일합니까? – Shadow
질문에 이미지를 추가했습니다. –