2

私は2つのテーブルを持っています:

CREATE TABLE user (
ticketId integer not null,
eventId integer not null,
ticketUsed integer, 
userName text not null,
FOREIGN KEY (ticketId) REFERENCES ticketType (ticketId)
);

CREATE TABLE ticketType ( 
eventId integer not null, 
ticketId integer unique not null,
ticketsUsed integer,
FOREIGN KEY (eventId) REFERENCES event (eventId)
);

ticketType.ticketsUsed使用済みチケットに応じて更新しようとしています

UPDATE ticketType 
SET ticketsUsed = (SELECT COUNT(*) FROM user as u WHERE ticketUsed=1)
WHERE ticketId = u.ticketId;

しかし、私はエラーが発生します:

エラー: そのような列はありません: u.ticketId

UPDATE ticketType
SET ticketsUsed = us.count
FROM ticketType
INNER JOIN (SELECT ticketId, COUNT(*) as count FROM user  WHERE ticketUsed=1 group by ticketId) us 
ON us.ticketId=ticketType.ticketId
WHERE eventId = 23779;

エラー: 「FROM」付近: 構文エラー

4

1 に答える 1

2

ticketIdサブクエリ内にフィルターを配置する必要があります。

UPDATE ticketType
SET ticketsUsed = (SELECT COUNT(*)
                   FROM user AS u
                   WHERE ticketUsed = 1
                     AND u.ticketId = ticketType.ticketId)
于 2013-09-06T09:24:53.733 に答える