Ошибка: около строки 1: около "(": синтаксическая ошибка: SQLite Ошибка при попытке создать представление - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь создать представление в SQLite, но, видимо, есть синтаксическая ошибка, я не уверен, что это такое. Это запрос:

CREATE VIEW personDetails(fname, lname, bdate, bplace, carsowned,ticketsRcvd) AS
SELECT p.fname,p.lname,p.bdate,p.bplace,COUNT(DISTINCT(r.vin)),COUNT(DISTINCT(t.violation))
FROM persons p LEFT JOIN registrations r ON p.fname = r.fname
LEFT JOIN tickets t ON r.regno = t.regno
GROUP BY p.fname,p.lname, p.bdate,p.bplace;

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Это может быть больше комментарий, чем ответ, но форматирование на самом деле не подходит для комментария.

Я бы попробовал это:

CREATE VIEW personDetails
AS
SELECT p.fname, p.lname, p.bdate, p.bplace,
   COUNT(DISTINCT r.vin) carsowned, COUNT(DISTINCT t.violation) ticketsRcvd
FROM persons p
LEFT JOIN registrations r
   ON p.fname = r.fname
   AND p.lname = r.lname
LEFT JOIN tickets t ON r.regno = t.regno
GROUP BY p.fname, p.lname, p.bdate, p.bplace;
0 голосов
/ 10 октября 2019

Нет ничего плохого в том, что вы создали. Но прежде чем создавать новый, рекомендуется сначала отказаться от просмотра.

DROP VIEW IF EXISTS [personDetails]; 
CREATE VIEW [personDetails](fname, lname, bdate, bplace, carsowned,ticketsRcvd) AS
SELECT p.fname,p.lname,p.bdate,p.bplace,COUNT(DISTINCT(coalesce(r.vin, 0))),COUNT(DISTINCT(coalesce(t.violation, 0)))
FROM persons p 
LEFT JOIN registrations r ON p.fname = r.fname
LEFT JOIN tickets t ON r.regno = t.regno
GROUP BY p.fname,p.lname, p.bdate,p.bplace;
...