SQL Server에서 MySQL로 마이그레이션 된 데이터베이스가 있습니다. SQL Server에서 관계가 null이 아닌 열의 값을 얻으려는 기존 쿼리가있었습니다. 두 테이블 간의 관계가 null이면 다른 테이블과의 관계가 있어야 함을 의미합니다. 관계가 NULL이 아닌 열을 가져옵니다.
이
내가 사용하던 쿼리입니다 :SELECT C.expediente,
C.status,
Sum(M.monto) AS monto,
Sum(M.interes) AS interes,
Sum(M.iva) AS iva,
Sum(M.capital) AS capital,
M.fecha_mov,
AB.tipo_abono,
AB.id_deposito,
Isnull(Min(tg.nombre), Min(tp.nombcomp)) AS nombreGrupo
FROM movimientos AS M
JOIN acreditados AS A
ON A.id_acreditado = M.id_acreditado
JOIN creditos AS C
ON C.id_credito = A.id_credito
JOIN abonos AS AB
ON AB.id_movimiento = M.id_movimiento
OUTER apply (SELECT TOP 1 G.nombre
FROM grupos G
WHERE G.id_credito = C.id_credito) tg
OUTER apply (SELECT TOP 1 P.nombres + ' ' + P.apellido_paterno + ' '
+ P.apellido_materno AS NombComp
FROM personas P
WHERE A.id_persona = P.id_persona) tp
GROUP BY M.fecha_mov,
AB.tipo_abono,
AB.id_deposito,
C.expediente,
C.status
ORDER BY M.fecha_mov
그러나 MySQL은 OUTER APPLY
또는 ISNULL
더이없는 것 같다. 어떻게이 쿼리를 MySQL로 변환 할 수 있습니까?
OUTER APPLY에 대해 너무 확신하지는 않지만 ISNULL에 대해 IS NULL (공백 포함)을 사용해 보셨습니까? – Infiltrator
mysql IS NULL은 하나의 표현식 만 평가하고, COALESCE 함수는 트릭을하지만, 여전히 Outer Apply 부분에 붙어 있습니다. –
질문, 당신은'grupos'와'personas' 테이블에서 무엇을 얻고 있습니까? 각각'id_credito'와'id_persona'에 대해 무작위 레코드를 생성합니까? –