LINUX.ORG.RU
ФорумAdmin

Коллективный разум


0

0

Ребята, выручайте! Не знал куда запостить и запостил суда.

Есть Две таблицы CLIENTS (со столбцами CLIENT_ID; USE_IPFILTER) и IPFILTER (со столбцами CLIENT_ID; IP).

Надо проставить "1" в USE_IPFILTER, НО только в том CLIENT_ID, который присутствует в таблице IPFILTER.

sqlplus



Перемещено JB из Talks


Re: Коллективный разум

не туда. но все же попробуй так:

update CLIENTS set USE_FILTER=1 where CLIEND_ID in (select CLIENT_ID from IPFILTER)

k0l0b0k ★★ ()

Re: Коллективный разум

update clients set use_ipfilter = 1 where client.client_id = ipfilter.client_id;

ЗЫ: задолбали рудиментарные префиксы, если таблица clients то нахера оно имеет поле client_id? Чем id не подошел?

Oceanborn ()
Ответ на: Re: Коллективный разум от Oceanborn

Re: Коллективный разум

>Используй алиасы, а то что джоины писать не удобно хреновая отмазка. Это не повод поганить схему.

ага, а если в таблице >1 FK, как называть? id1, id2, id3 ... ?

borisych ★★★★★ ()

Re: Коллективный разум

Спасибо, други!

fashka ()
Ответ на: Re: Коллективный разум от borisych

Re: Коллективный разум

Я не понял какой еще FK? Речь идет о том чтобы давай вменяемые имена полям. Если у тебя есть сущность Client, то у этой сущности нет атрибуты client_id, а есть просто id. Если PK становится FK в другой таблице то тут уже он получает префикс.

Вот как правильно:

Clients (Id, Name)

Items (Id, Name, Price)

Orders (Id, ClientId, ItemId)

Oceanborn ()
Ответ на: Re: Коллективный разум от Oceanborn

Re: Коллективный разум

А потом

SELECT * FROM Clients INNER JOIN Orders ON Clients.Id = ClientId INNER JOIN Items ON Items.Id = ItemId

Удобнее если

Clients (ClientId, Name)

Items(ItemId, Name, Price)

Orders(OrderId, Client, Item)

SELECT * FROM Clients INNER JOIN Orders ON ClientId = Client INNER JOIN Items ON ItemId = Item

На 10 символов коротче.

Но это еще фигня. Встречаются перцы, которые любят полям давать префиксы типа dbf_, а таблицам dbt_. Вот за такое надо отрезать левое яйцо.

anonymous ()
Ответ на: Re: Коллективный разум от anonymous

Re: Коллективный разум

>SELECT * FROM Clients INNER JOIN Orders ON ClientId = Client

короче будет так:

clients(client_id, name) orders(order_id,client_id)

SELECT * FROM Clients NATURAL JOIN Orders

borisych ★★★★★ ()
Ответ на: Re: Коллективный разум от Oceanborn

Re: Коллективный разум

>Я не понял какой еще FK? Речь идет о том чтобы давай вменяемые имена полям.

называть поле client_id а не id в таблице clients вполне нормально.

borisych ★★★★★ ()
Ответ на: Re: Коллективный разум от borisych

Re: Коллективный разум

Это нихрена не нормально, может ты еще и всем полям префиксы даешь именем таблицы? Вобщем доказывать вам что-то вполне бесполезно.

Oceanborn ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.