1

アイテム グループの多数の画像を取得しようとしていますが、割り当てられたエイリアスで乗算を行うことができないようです。以下のスクリプトをいくつか変更して試しましたが、試したすべてのことがうまくいきません。

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
4

3 に答える 3

3

これを試してみてください、私は両方を壊しました-

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
于 2012-12-20T17:01:06.017 に答える
1

こんな感じで使ってみてください

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

また、クエリで cartisin 製品を使用しています。つまり、FROM を 2 つのテーブルで使用しています。これは多くの結果をもたらします。それを避け、代わりに常に join を使用してください。

于 2012-12-20T17:29:35.217 に答える
0

これを試して:

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;
于 2012-12-20T17:05:35.970 に答える