Выберите строки из одной таблицы, где определенное поле равно полю в строке из другой таблицы, с Python и SQLite3 - PullRequest
0 голосов
/ 27 октября 2011

У меня есть небольшая база данных, унаследованная от почти несуществующего проекта.В этой базе данных есть таблица «Пациенты» с индивидуальными личными данными и уникальное поле «Id», а также таблица «Экзамены» с некоторыми полями для каждого исследования, одно из этих полей - «Patient_Id».

Что яхочу, чтобы для данного пациента (строка из таблицы «Pacientes») были экзамены (строки) из таблицы «Exames», чей «Patient_Id» совпадает с экзаменом данного пациента.

Я очень новичок в SQL, поэтомуесли вопрос очень наивный, я прошу прощения.

Мой рабочий код следующий, но я использую цикл for, хотя я бы предпочел иметь SQL-запрос (который является самой точкой использования баз данных, ядумаю ...):

#!/usr/bin/env python
# coding: utf-8

import os, sqlite3

conn = sqlite3.connect('BDdata.db3')
conn.row_factory = sqlite3.Row
c = conn.cursor()

c.execute('SELECT * FROM Exames')
exams = c.fetchall()

c.execute('SELECT * FROM Pacientes')
for row in c:
    Nome = row['nome']
    ID = row['Id']
    for exam in exams:          # I would like to replace this loop
        if exam['Id_Paciente'] == ID:       # with a SQL query meaning
            print exam['File']

=================================

AnПохоже, я хочу ответить на аналогичный вопрос, но я понятия не имею, как это сделать в Python с модулем sqlite3, тем более, что в этом выражении важно и что является случайным, или какова структура синтаксиса:

Выбор строк из таблицы одним полем из другой таблицы

SELECT i.prof_image 
FROM profile_images i 
WHERE cat_id = (select max(cat_id) from images_cat)

1 Ответ

1 голос
/ 27 октября 2011

Я думаю, что следующее должно делать то, что вы хотите:

...
c = conn.cursor()

c.execute('SELECT * FROM Pacientes')
for row in c.fetchall():
    Nome = row['nome']
    ID = row['Id']
    c.execute('SELECT File FROM Exames WHERE Id_Paciente=?', [ID])
    for exam in c:
        print exam['File']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...