LINUX.ORG.RU

SQL передать данные через 3 таблицы

 


0

1

Привет ЛОР. Возможно тупняк, но имеются 3 таблицы.

|Таблица1   |Таблица2   |Таблица3  |
|-----------|-----------|----------|
|имя        |idТаблица2 |idТаблица3|
|idТаблица2 |idТаблица3 |число     |

Как получить сумму чисел которые относятся к определенному имени?


В цикле пройтись по всем элементам которые относятся к имени? Если есть ключ.

NAY_GIGGER ()
Ответ на: комментарий от IIIypuk

Ну в таблице3 есть несколько данных типа (1,17),(2,21),(1,34) итд, формата (id,число). В таблице1 данные (Маша,1),(Петя,2). нужно получить (Маша,51) (Петя,21).

Pups ()

В языке SQL не принято так описывать таблицы. Для описания применяют или DDL или приводят выборку на несколько строк с указанием столбцов. А лучше и то и другое.

Также хороши ER- диаграммы

pup_kin ()
Последнее исправление: pup_kin (всего исправлений: 2)
Ответ на: комментарий от pup_kin

Так?

CREATE TABLE  "Таблица1"
(
	"idТаблица1" VARCHAR(20),
	FOREIGN KEY (idТаблица2)  REFERENCES Таблица2 (idТаблица2)
)
;

CREATE TABLE  "Таблица2"
(
	"idТаблица2" NUMBER PRIMARY KEY,
	FOREIGN KEY (idТаблица3)  REFERENCES Таблица3 (idТаблица3)
)
;

CREATE TABLE  "Таблица3"
(
	"idТаблица3" NUMBER PRIMARY KEY,
	"число" NUMBER NOT NULL,
)
;
Pups ()
Ответ на: комментарий от vvn_black

А можно написать как? А то у меня лапки и здесь

CREATE VIEW пример(
имя,
число)
AS
SELECT DISTINCT
"Таблица1"."имя",
"Таблица3"."число"
FROM "Таблица1"
JOIN "Таблица2" ON "Таблица2"."idТаблица2" = "Таблица1"."idТаблица2"
JOIN "Таблица3" ON "Таблица3"."idТаблица3"="Таблица2"."idТаблица3"

кидает ошибку

Error report -
ORA-00904: "Таблица2"."idТаблица3": недопустимый идентификатор
00904. 00000 -  "%s: invalid identifier"
Pups ()
Последнее исправление: Pups (всего исправлений: 1)
Ответ на: комментарий от Pups

А можно написать как?

Неа, нельзя.

Потому что Таблица2 - так себе название для таблицы, а idТаблица3 - так себе идентификатор.

vvn_black ★★★★★ ()

select table1.name, sum(tbl3.number) from table1

join tbl2 on table1.id2 = table2.id2

join tbl3 on tbl2.id3 = table3.id3

group by table1.name

Rastafarra ★★★★ ()
Последнее исправление: Rastafarra (всего исправлений: 1)

facepalm.jpg поставил точку посреди идентификатора. Спасибо всем присутствующим.

Pups ()

У тебя много ко много. Делай join делай sum(число)

crutch_master ★★★★★ ()

Возможно тупняк

Гарантированно.

LamerOk ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.