мета-данные страницы
  •  
Загрузка не удалась. Возможно, проблемы с правами доступа?

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
python:week24 [20/03/2021 00:56] – [Выборка данных] Admin Adminovichpython:week24 [20/03/2021 01:03] (текущий) – [Выборка данных] Admin Adminovich
Строка 44: Строка 44:
  
  
-Пусть у нас есть три таблички: users (id, user), cities (id, city), users2cities (user_id, city_id). Содержимое таблицы users+Пусть у нас есть три таблички: users (id, user), cities (id, city), users2cities (user_id, city_id).  
 + 
 +Содержимое таблицы users
  
 ^ id ^ user ^ ^ id ^ user ^
Строка 51: Строка 53:
 | 3 | Марина | | 3 | Марина |
  
-<code python> +Содержимое таблицы cities
-q = 'SELECT id, name FROM users' +
-cur.execute(q) +
-rows = cur.fetchall()+
  
-for row in rows+^ id ^ city ^ 
-    print(row+| 1 | Москва | 
-     +| 2 | Новосибирск | 
-q = 'SELECT id, name FROM users WHERE id > 10'+| 3 | Казань | 
 +| 4 | Владивосток | 
 + 
 +Содержимое таблицы users2cities 
 + 
 +^ id ^ city ^ 
 +| 1 | 1 | 
 +| 2 | 1 | 
 +| 3 | 2 | 
 + 
 +Предположим, мы хотим найти всех москвичей. Для этого, нам нужно сначала cконструировать запрос, дающий номер, который соответствует Москве:  
 + 
 +  SELECT id from cities WHERE city='Москва' 
 + 
 +Теперь надо нам выяснить у каких пользователей Москва прописана как город:  
 + 
 +  SELECT users2city.user_id FROM users2city WHERE users2city.city_id in (SELECT id from cities WHERE city='Москва'
 + 
 +И, наконец, найдем имена этих пользователей:  
 + 
 +  SELECT user FROM users WHERE id in (SELECT users2city.user_id FROM users2city WHERE users2city.city_id in (SELECT id from cities WHERE city='Москва')
 + 
 + 
 +<code python> 
 +q = 'SELECT user FROM users WHERE id in (SELECT users2city.user_id FROM users2city WHERE users2city.city_id in (SELECT id from cities WHERE city='Москва'))'
 cur.execute(q) cur.execute(q)
 rows = cur.fetchall() rows = cur.fetchall()