2012-12-20 2 views
1

항목 그룹에 대해 여러 개의 이미지를 가져 오려고하지만 할당 된 별칭을 사용하여 곱셈을 사용할 수없는 것 같습니다. 몇 가지 수정 사항으로 아래 스크립트를 시도했지만 시도한 모든 기능이 작동하지 않습니다. 모두 또한 당신이 usig cartisin 제품이다이MySQL - 별칭으로 열 곱하기

SELECT 
    t.ID, 
    t.Name, 
    t.Serviced, 
    t.Facility, 
    t.title, 
    t.numseries, 
    t.serimages, 
    t.numseries * t.serimages AS 'Number of Images' 
FROM 
    (
    SELECT s.pid AS 'ID', 
      CONCAT_WS(', ', p.lastname, p.firstname) AS 'Name', 
      CONCAT(s.date, ' ', s.time) AS Serviced, 
      p.institution AS Facility, 
      s.description AS 'description title', 
      (SELECT COUNT(*) FROM series se WHERE se.studyid = s.id) AS numseries, 
      (SELECT COUNT(*) FROM image i WHERE i.seriesid = se.id) AS serimages  
    FROM product p, series se 
    JOIN study s ON s.pid = p.id 
    ) as t 
GROUP BY t.id 
ORDER BY t.Serviced DESC 

를 사용해보십시오

Select *, (numseries * serimages) as 'Number of Images' 
from (SELECT 
     s.pid AS 'ID', 
     CONCAT_WS(', ', p.lastname, p.firstname) AS 'Name', 
     CONCAT(s.date, ' ', s.time) AS Serviced, 
     p.institution AS Facility, 
     s.description AS 'description title', 
     (SELECT COUNT(*) FROM series se WHERE se.studyid = s.id) AS numseries, 
     (SELECT COUNT(*) FROM image i WHERE i.seriesid = se.id) AS serimages 
    FROM product p, series se 
    INNER JOIN study s ON s.pid = p.id 
    GROUP BY s.id 
    ORDER BY Serviced DESC 
) as a; 
+2

'SELECT' 절에 정의 된 별칭을 참조 할 수 없습니다. 이것들은'ORDER BY' (또는 MySQL'HAVING')에서만 참조 할 수 있습니다. –

+0

샘플 데이터 구조? 그래서 우리는 –

+4

@SaharshShah를 테스트 할 수 있습니다 - 사람들이 당신의 대답을 받아들이는 것을 중단하십시오. 무례하다. – ChrisF

답변

3

이보십시오, 나는 both-

SELECT s.pid AS 'ID', 
     CONCAT_WS(', ', p.lastname, p.firstname) AS 'Name', 
     CONCAT(s.date, ' ', s.time) AS Serviced, 
     p.institution AS Facility, 
     s.description AS 'description title', 
     ((SELECT COUNT(*) 
      FROM series se 
     WHERE se.studyid = s.id) 
      * 
     (SELECT COUNT(*) 
      FROM image i 
     WHERE i.seriesid = se.id) 
     ), 
     AS 'Number of Images' 
    FROM product p, 
      series se 
     JOIN 
      study s 
     ON s.pid = p.id 
GROUP BY s.id 
ORDER BY Serviced DESC 
+0

사소한 변경을해야했지만,이 곳에서 나에게 ty가 필요한 곳이 생겼다. –

0

이 시도 clobbed 귀하의 쿼리는 두 테이블과 함께 FROM을 사용하는 것을 의미합니다. 이것은 많은 결과를 가져온다. 이것을 피하고 항상 조인을 사용하십시오.

0

:

SELECT s.pid AS 'ID', 
     CONCAT_WS(', ', p.lastname, p.firstname) AS 'Name', 
     CONCAT(s.date, ' ', s.time) AS Serviced, 
     p.institution AS Facility, 
     s.description AS 'description title', 
     (SELECT COUNT(*) 
      FROM series se 
     WHERE se.studyid = s.id) 
      AS numseries, 
     (SELECT COUNT(*) 
      FROM image i 
     WHERE i.seriesid = se.id) 
      AS serimages, 
     numseries * serimages AS 'Number of Images' 
    FROM product p, 
      series se 
     JOIN 
      study s 
     ON s.pid = p.id 
GROUP BY s.id 
ORDER BY Serviced DESC