SELECT barcode, t3.employee,
SEC_TO_TIME(SUM(TIMESTAMPDIFF(SECOND, dateandtime, (SELECT IFNULL(MIN(dateandtime),NOW())
FROM wwtlog b
WHERE b.barcode = a.barcode
AND b.dateandtime > a.dateandtime
AND b.inorout = 'IN'
)))) timeused
FROM wwtlog a
JOIN (SELECT t1.barcode, t1.employee FROM wwtlog t1
JOIN (SELECT barcode, MAX(id) id FROM wwtlog GROUP BY barcode) t2
ON t1.id = t2.id AND t1.barcode = t2.barcode) t3 ON t1.barcode = barcode
WHERE inorout = 'OUT' and barcode IN (SELECT t1.barcode FROM wwtlog t1
JOIN (SELECT barcode, MAX(dateandtime) dateandtime FROM wwtlog GROUP BY barcode) t2
ON t1.barcode = t2.barcode AND t1.dateandtime = t2.dateandtime WHERE inorout = 'IN')
GROUP BY barcode;
これについての助けがあれば素晴らしいですが、私はt3.employeeを取得するために結合を追加したときにこれを手に入れました。私は自分が何をしているのか分からないと感じています。フィールドリストの 'barcode'列が曖昧です
一意のバーコードを取得しようとしていますが、時刻INと時刻OUTのタイムスタンプの合計時間があります。私は、最後にアイテム(バーコード)をチェックアウトした従業員を取得するために結合を使用しようとしていました。あなたがt3.employeeの参加を取り除き、従業員を尋ねると、バーコード、最後のものではありません。
2番目の参照で参照されるサブクエリのエイリアスを指定する必要があります。このサブクエリの別名は、ここでは 'barcode' ... t3 ON t1.barcode = barcode ....';私は 't3'を推測している。 ....また、上部のSELECTとメインクエリのWHEREにあります。 – Uueerdo
他の場所と同様にあいまいさを取り除きます – Strawberry