Мой код не работает, и я не знаю, как его исправить, чтобы он работал правильно. И да, Как заставить работать три таблицы sql? у меня не работал.
SELECT [id],
review.[plot_name],
submission.[sub_date],
[report_date], report.[critical_errors]
FROM ((review
INNER JOIN submission ON review.[id] = submission.[id])
INNER JOIN report ON [id] = report.[id])
WHERE [plot_name] = Scheme;
никогда не включайте «у меня не работает». в вопросе и всегда копируйте/вставляйте полное сообщение об ошибке. Также спрашивайте только тогда, когда вы искали это сообщение об ошибке. И вы должны указать, какую систему базы данных вы используете. SQL ведет себя по-разному в разных системах, таких как MSSQL, MySQL, MariadDB, PostgreSQL, SQLite и т. д.
Другими словами, шаблон полезного вопроса SQL обычно состоит в том, чтобы предоставить Create Table
утверждения вовлеченных, а именно «проверить», «отправить» и «отчет» в вашем случае, а также несколько строк тестовых данных, представленных в виде Insert Into
утверждений, которые читатели могут работать, чтобы помочь вам, и описание ожидаемого результата.
Как сказал @NickW, вам нужно будет сообщить СУРБД, какой [ID] в вашем выражении принадлежит какой таблице, то же самое для любых других имен столбцов, которые могут встречаться более чем в одной из задействованных таблиц. И вы можете сообщить нам марку и модель вашей СУБД, добавив, например, тег, например postgresql-9.3
. И, как указал @Luuk, вы можете объяснить, что именно означает «не работает» в вашем сценарии, например, описав желаемый результат, когда вы запускаете свой оператор для определенных строк тестовых данных.
Ваша попытка до сих пор выглядит так, как будто вы, возможно, хотите что-то вроде этого:
CREATE TABLE review (reviewID Int, plot_name Char(20));
CREATE TABLE submission (submissionID Int, reviewID Int, sub_date Date);
CREATE TABLE report (reportID Int, reviewID Int, report_date Date, critical_errors Char(20));
INSERT INTO review VALUES (1, 'foo'), (2, 'bar'), (3, 'Scheme'), (4, 'Scheme');
INSERT INTO submission VALUES (1, 3, Cast('2022, 2, 25' as Date));
INSERT INTO report VALUES (2, 3, Cast('2022-3-25' as Date), 'not so critical');
SELECT
review.reviewID, review.plot_name,
submission.sub_date,
report.report_date, report.critical_errors
FROM review
INNER JOIN submission ON review.reviewID = submission.reviewID
INNER JOIN report ON review.reviewID = report.reviewID
WHERE review.plot_name = 'Scheme';
|ReviewId | plot_name | sub_date | report_date | critical_errors |
|----------|-----------|----------|-------------|-----------------|
| 3 |'Scheme' |02/25/2022| 03/25/2022 |'not so critical'|
NB: ReviewID № 4 отсутствует в результате, потому что в таблицах Inner Join намеренно нет совпадений первичного и внешнего ключа.
Каким-то образом моя попытка форматирования «Ожидаемый результат» выглядит хорошо для меня в режиме редактирования, но ужасно плохо в режиме просмотра?
Я также попытался обновить ожидаемый результат, но по той причине, что я, кажется, не понимаю, он не будет отображаться в моде View, поэтому вместо этого я сделал это как код. По крайней мере, это выглядит немного красивее
У вас есть экземпляры [id], которые не включают имя таблицы