Skip to content

Instantly share code, notes, and snippets.

@kmaksimovv
Last active September 22, 2018 21:06
Show Gist options
  • Select an option

  • Save kmaksimovv/b22dc476e56e5e5421da74a6bc246d60 to your computer and use it in GitHub Desktop.

Select an option

Save kmaksimovv/b22dc476e56e5e5421da74a6bc246d60 to your computer and use it in GitHub Desktop.
fix _test_guru_sql
############
#В имени поля не нужно дублировать имя таблицы
test_guru=> \d categories
Table "public.categories"
Column | Type | Modifiers
----------------+-----------------------+---------------------------------------------------------
id | integer | not null default nextval('categories_id_seq'::regclass)
category_title | character varying(20) | not null
Indexes:
"categories_pkey" PRIMARY KEY, btree (id)
Referenced by:
TABLE "tests" CONSTRAINT "tests_category_id_fkey" FOREIGN KEY (category_id) REFERENCES categories(id)
test_guru=> ALTER TABLE categories RENAME COLUMN category_title TO title;
ALTER TABLE
test_guru=> \d categories
Table "public.categories"
Column | Type | Modifiers
--------+-----------------------+---------------------------------------------------------
id | integer | not null default nextval('categories_id_seq'::regclass)
title | character varying(20) | not null
Indexes:
"categories_pkey" PRIMARY KEY, btree (id)
Referenced by:
TABLE "tests" CONSTRAINT "tests_category_id_fkey" FOREIGN KEY (category_id) REFERENCES categories(id)
#######
#Можно вставлять несколько строк разом
test_guru=> INSERT INTO categories (title) VALUES ('геогрфия'), ('музыка'), ('спорт');
INSERT 0 3
test_guru=> select * from categories;
id | title
----+------------
1 | языки
2 | литература
3 | история
4 | геогрфия
5 | музыка
6 | спорт
(6 rows)
##########
#Здесь для краткости можно использовать оператор IN
test_guru=> select test_title, level from tests where level IN (2,3)
test_guru-> ;
test_title | level
------------------------------+-------
английский | 2
Война и Мир | 2
Русь древняя и средневековая | 3
(3 rows)
#######
#Вместо дублирования названия таблицы в имени поля тут стоило использовать алиасы для полей
test_guru=> select test_title as "Тест", title as "Категория" from tests JOIN categories ON tests.category_id = categories.id;
Тест | Категория
------------------------------+------------
английский | языки
творчество Пушкина | литература
Первая мировая война | история
Война и Мир | литература
Русь древняя и средневековая | история
(5 rows)
@iBublik
Copy link

iBublik commented Sep 22, 2018

Проще конечно было пересоздать базу с нуля, чтоб было видно что все замечания поправлены

@iBublik
Copy link

iBublik commented Sep 22, 2018

Такие нужно внести изменения во все таблицы, а не только в категории

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment