如何检查Table1和Table2中的列是否一致,如果匹配,则删除Table2和Table3中的记录? Table2和Table3中的记录通过键关联,但没有指定删除规则。
到目前为止,我收到了这样的请求:
select * FROM Таблица2
WHERE EXISTS (
SELECT 1 FROM Таблица1 WHERE Таблица2.поле1 = Таблица1.поле1
);
预期结果 - 从 Table2 和 Table3 中删除数据
如何检查Table1和Table2中的列是否一致,如果匹配,则删除Table2和Table3中的记录? Table2和Table3中的记录通过键关联,但没有指定删除规则。
到目前为止,我收到了这样的请求:
select * FROM Таблица2
WHERE EXISTS (
SELECT 1 FROM Таблица1 WHERE Таблица2.поле1 = Таблица1.поле1
);
预期结果 - 从 Table2 和 Table3 中删除数据
我正在解决 Yandex 前几年的问题,但仍然无法通过大量数据的测试,随着时间的推移它会下降。任务本身

我的代码:
n = int(input())
orders = []
for i in range(n):
start = list(map(int, input().split()))
orders.append(start)
q = int(input())
queries = []
for i in range(q):
start = list(map(int, input().split()))
queries.append(start)
results = []
for query in queries:
query_type = query[-1]
if query_type == 1:
start_time = query[0]
end_time = query[1]
total_cost = 0
for order in orders:
order_start_time = order[0]
if order_start_time >= start_time and order_start_time <= end_time:
total_cost += order[2]
results.append(total_cost)
elif query_type == 2:
start_time = query[0]
end_time = query[1]
total_duration = 0
for order in orders:
order_end_time = order[1]
if order_end_time >= start_time and order_end_time <= end_time:
total_duration += order[1] - order[0]
results.append(total_duration)
print(*results)
输入和输出数据示例
进入
1
10 100 1000
6
1 10 1
1 10 2
10 100 1
10 100 2
100 1000 1
100 1000 2
结论
1000 0 1000 90 0 90
进入
5
5 20 5
6 21 4
6 22 3
7 23 2
10 24 1
3
6 11 1
4 6 1
7 11 1
结论
10 12 3
大家好,这里有一个问题:有4张表是相互关联的,需要写一个请求来显示游戏的评论(按id),以及每条评论有多少个赞以及用户是否喜欢该评论本身。游戏表通过 game_id 字段与评论表关联。数据库-postgresql15。这是我的开发,其中只计算喜欢,但不检查用户本人是否喜欢该评论。如果有什么需要澄清的,我会澄清。
SELECT "review".id, "review".user_id, game_id, grade, "comment", "review".created_at, "user".username,
count(distinct "review_like".user_id)
FROM public.review
left outer join "user" on "user".id = "review".user_id
left outer join "review_like" ON "review_like".review_id = "review".id
where "review".game_id = '6ad2dd8e-b42a-46de-b8d5-323cd221d39f' group by "review".id, "user"."username"
async def get_user(id: UUID4, db: AsyncSession) -> dict:
query = select(user_table, func.count(distinct(list_table.c.id)).label('list_count'), func.count(distinct(follower_table.c.follower_id)).label('follower_count'), func.count(distinct(passed_game_table.c.game_id)).label('passed_game_count')).join( follower_table, onclause=follower_table.c.user_id==user_table.c.id).join(list_table, onclause=list_table.c.owner_id==user_table.c.id).join(passed_table, onclause=passed_table.c.user_id==user_table.c.id).join(passed_game_table, onclause=passed_game_table.c.list_id==passed_table.c.id).group_by(user_table).where(user_table.c.id == id)
result = await db.execute(query)
print(result.all())
return result.all()
大家好,有一个功能可以显示特定用户的订阅数、列表数和游戏数,但是如果用户至少没有某样东西,那么就不会显示任何结果,而sql查询显示0,如果有的话根本失踪了。必须显示用户,无论他的订阅者是零还是100。我使用sqlalchemy 2.0
我的问题如下:
当您单击鼠标左键时,应该修复一次点击,但由于某种原因,它仅由一个立方体修复。
我附上代码。
from tkinter import *
import random
class Rectangle:
def __init__(self, canvas, coord, fill, outline=None):
self.x = random.randint(-5, 5)
self.y = random.randint(-5, 5)
self.canvas = canvas
self.outline = outline if outline is not None else fill
self.fill = fill
self.canvas_id = self.canvas.create_rectangle(coord, outline=self.outline, fill=self.fill)
self.canvas.bind('<Button-1>', self.click)
def draw(self):
if (self.canvas.coords(self.canvas_id)[0] < 1 or self.canvas.coords(self.canvas_id)[2] > 700):
self.x = self.x * (-1)
elif (self.canvas.coords(self.canvas_id)[1] < 1 or self.canvas.coords(self.canvas_id)[3] > 400):
self.y = self.y * (-1)
self.canvas.move(self.canvas_id, self.x, self.y)
self.canvas.after(35, self.draw)
def click(self, event):
x = event.x
y = event.y
print(self.canvas_id)
if (x < self.canvas.coords(self.canvas_id)[2] and x > self.canvas.coords(self.canvas_id)[0]) and (
y < self.canvas.coords(self.canvas_id)[3] and y > self.canvas.coords(self.canvas_id)[1]):
print('Target')
#self.canvas.delete(self.canvas_id)
root = Tk()
root.geometry('800x500')
root.title('Курсовая работа')
c = Canvas(width=700, height=400, bg='black')
c.place(x=50, y=10)
rectangle = [Rectangle(c, (10, 20, 40, 50), fill='red') for i in range(8)]
for rec in rectangle:
rec.draw()
# Кнопки запуска, остановки и выхода из программы
vars = IntVar()
vars.set(0)
r1 = Radiobutton(text='СТАРТ', indicatoron=0, variable=vars, value=1, font='Times 15', bg='green')
r2 = Radiobutton(text='СТОП', indicatoron=0, variable=vars, value=0, font='Times 15', bg='yellow')
r1.place(x=50, y=430)
r2.place(x=150, y=430)
root.mainloop()