Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Уникальный id поля для нескольких таблиц?

Как лучше реализовать?

Таблица 1
id_сотрудника
id_объекта
имя


Таблица 2
id_товара
id_объекта
название

Таблица 3
id_автомобиля
id_объекта
марка


Таблица 4 хранит уникальный id объекта
id_объекта
время_перепроверки_информации
напоминать


Нужно чтобы при добавлении записи в таблицы 1-3, id_объекта был уникален для всех записей во всех таблицах.
У каждой таблицы свой primary key, нужен автоинкремент для поля id_объекта.
Ответ: эх, про WHERE в UPDATE забыл... ну да ладно, не суть)

Вам также можеть быть интересно:

MySQL 5.6.17 в zip
ALTER TABLE
Временные таблицы.
Добавление события, процедуры
Синтаксис UNION
Вопрос: Задание имени поля в запросе

Каким образом в запросе можно задать имя поля из нескольких состовляющих
SELECT field1 as ' '+'Field1'
SELECT field1 as CONCAT(' ',Field1)
Вообщем хочу добавить пробел перед названием поля. Это нужно из-за того, что запрос берется из подзапросов и многие поля одинаковые а автоматическое назначение полей меня не устраивает (типа Filed11 - хочу [ Field1] и [ Field1], чтобы для пользователя это не было заметно).
Ответ: Все верно решил свой вопрос на программном уровне.
Вопрос: Вывод колод вместе с названием таблицы

Допустим есть запрос, и одинаковыми именами колонок в разных таблицах

SELECT
user.name,
region.name
FROM
ur_l
LEFT JOIN region
ON region.`id` = user.`regional_id`


Он выведет колонки:
name | name

возможно ли вывести название колонок как user.name | region.name

*без использования 'AS' ?
Ответ:
pumi11
Допустим есть запрос, и одинаковыми именами колонок в разных таблицах

SELECT
user.name,
region.name
FROM
ur_l
LEFT JOIN region
ON region.`id` = user.`regional_id`


Он выведет колонки:
name | name

возможно ли вывести название колонок как user.name | region.name

*без использования 'AS' ?



SELECT
user.name user_name,
region.name region_name
FROM
ur_l
LEFT JOIN region
ON region.`id` = user.`regional_id`
Вопрос: Изменяем имя поля в таблице и в запросах.

Доброго времени суток.
Где то когда то читал, что в Аксе можно включить следующую фичу. Смысл ее в том, что если изменяем имя поля таблицы ,то автоматически меняется все названия этого поля во всех запросах где оно участвует. Если это так, ткните носом пожалуйста (поиском не нашел...может напутал чего?).
Спасибо.
Ответ:
СанzИ
Есть ли еще способ изменить имя поля (столбца) запроса, кроме как добавить новое имя в начало и потом двоеточие перед названием поля таблицы и также в свойстве описание добавить имя. Хотелось бы добавить имя из значения элемента управления или переменной
Алиасы (псевдонимы) задаются конструкцией AS
SELECT a AS b FROM Tabl AS T
Вопрос: Ссылка на поле '|' может относиться к полям нескольких таблиц ...

Доброго времени суток.

Напомните, пожалуйста, в каких случаях возникает сообщение "Ссылка на поле '|' может относиться к полям нескольких таблиц перечисленных в предложении FROM инструкции SQL". Имя поля указано именно так: '|'. Когда-то неоднократно с этим сталкивался, но начисто забыл из-за чего это происходит.

Заранее премного благодарен.
Ответ: K-Nick,

может есть имя поля которое не желательно к использованию, типа Name, Date, If,...
Вопрос: есть ли парсер запроса, какие поля из каких таблиц используются в запросе?

есть какая нибудь функция или расширение, которые умеет до выполнения запроса определить какие поля из каких таблиц будут использоваться в запросе?

например запрос
select fff('select a.id, cid 
from taba a inner join tabb on a.poleb=b.id
where a.aac = 4'); 
вернул бы результат:

taba.aac
taba.id
taba.poleb
tabb.cid
tabb.id
Ответ:
dimonz80
Legushka
dimonz80, вы постановку задачи читали?. надо было не только еденицу из select 1 выводить, но и еще какие поля из каких таблиц участвовали в фильтрах, сортировках, группировках.

Ну тогда только query plan парсить, да.
vyegorov,
Кстати, может удобнее в xml/json парсить ( типа EXPLAIN(format json) SELECT bla bla bla) если версия PG позволяет конечно. Какия-никакая структура, а не просто текст.


Творчески переработав решение vyegorov, наговнокодил такое:
DROP FUNCTION IF EXISTS explain(text);

CREATE OR REPLACE FUNCTION explain(_sql text) RETURNS SETOF xml AS $$BEGIN
	RETURN QUERY EXECUTE format('EXPLAIN (verbose, format xml) %s', _sql);
END;$$ LANGUAGE plpgsql;

drop function if exists describe (text);

create or replace function describe(query text) returns setof text as $$
	with exp as (select * from explain(query)) 
	select 	distinct unnest(xpath('//ns:Item/text()',explain,ARRAY[ARRAY['ns', 'http://www.postgresql.org/2009/explain']])) :: text from exp 
$$ language sql;



select * from describe($$
 with t1(x) as (values (1),(2)),
       t2(x) as (values (2),(3))
select 1 from t1 join t2 ON t1.x=t2.x

$$); 
 


       describe
----------------------
 "*VALUES*".column1
 t2.x
 t1.x
 "*VALUES*_1".column1
 1

По хорошему надо поглядеть схему для XML вывода EXPLAIN
Вопрос: Поля подстановки в таблицах

Здравствуйте, уважаемые форумчане! Прочитала все, что смогла найти на форуме по проблеме использования полей подстановки в таблицах: и различные мнения, основанные на опыте работы, и эмоции типа "надоело уже...".
Например, довод, что таблица должна оставаться в первозданном виде, а все, что касается удобства ввода данных, должно реализовываться на форме, мне понравился.
НО, когда я объясняю людям, что не рекомендуется делать поля подстановки в таблицах, я должна это аргументировать.
Исходя из своего небольшого опыта, я не могу привести ни одного примера, когда поле подстановки в таблице на что-то отрицательно повлияло. База данных, спроектированная мной несколько лет назад и работающая до сих пор, содержит поля подстановок в таблицах. В том числе и такие, которые скрывают первичный ключ. Но это ни разу (!) не помешало при создании новых запросов, форм, таблиц и т.д.
Собственно мой вопрос, точнее просьба, заключается в следующем: если кто-то сталкивался с реальной ситуацией, когда поля подстановки в таблицах мешали решить задачу, поделитесь конкретными примерами.
Ответ:
Сообщение от Кефирник
И что сделать ничего нельзя, т.е. преобразовать цифру в выражение
Сообщение от Agapov_stas
и обьясняешь потом человеку пол дня, что, куда и как...
Если Вы были внимательны, то заметили, что я не писал фраз "это не возможно сделать","это сложно сделать"
Это(выводить вместо числового значения - текстовое) абсолютно не сложно делать.Но, смысл "наступать на грабли" на которые, уже неоднократно наступали и в итоге приходили к одному и тому же выводу : "Поля подстановок в таблицах - это есть зло!"
Вопрос: Доступ к полям текущей строки таблицы из запроса в "источнике строк"

Возможно ли получить доступ к полям текущей строки таблицы из запроса в "источнике строк"?

Есть три таблицы.
1. Персонал (номер, ФИО)
2. Преподает (персонал_номер, Предмет)
3. Расписание (Предмет, день_недели, Преподаватель)

Используется Access.
Как сделать так, чтобы при редактировании 3й таблицы при выборе предмета отсеивалась часть преподавателей, т.е. оставались только те, кто преподает этот предмет.

При использовании подстановки нужно в источник строк написать такой запрос:
SQL
1
2
3
SELECT Персонал.ФИО
 FROM Персонал, Преподает
 WHERE Персонал.номер=Преподает.номер AND ПРЕДМЕТ=Преподает.предмет;
Так вот вопрос: что нужно написать вместо ПРЕДМЕТ, чтобы получить значения предмета текущей строки.

Другими словами, как получить значения предмета текущей (которая вводится сейчас) строки, чтобы ее в запрос записать?
Ответ: ltv_1953, вот мы и ответили на первоначальный вопрос: "Возможно ли получить доступ к полям текущей строки таблицы из запроса в "источнике строк?" Ответ: "Можно, но только один раз для каждого поля (столбца). Поэтому рабочего диалога из таблицы не получится.
Сообщение от ltv_1953
Читайте самое начало - таблицы объект не программируемый ... . Типа обратиться в полю можно (это же решено), а вот изменение при переходе ... . И, еще раз, таблицы только для хранения данных (во всех базах, не только в Аксессе), не нужно пытаться сделать из них интерфейс ввода данных - для это есть формы.
".
ltv_1953 и PuhKMV, огромное спасибо за помощь!
Вопрос: Поля подстановки в таблицах

Здравствуйте, уважаемые форумчане! Прочитала все, что смогла найти на форуме по проблеме использования полей подстановки в таблицах: и различные мнения, основанные на опыте работы, и эмоции типа "надоело уже...".
Например, довод, что таблица должна оставаться в первозданном виде, а все, что касается удобства ввода данных, должно реализовываться на форме, мне понравился.
НО, когда я объясняю людям, что не рекомендуется делать поля подстановки в таблицах, я должна это аргументировать.
Исходя из своего небольшого опыта, я не могу привести ни одного примера, когда поле подстановки в таблице на что-то отрицательно повлияло. База данных, спроектированная мной несколько лет назад и работающая до сих пор, содержит поля подстановок в таблицах. В том числе и такие, которые скрывают первичный ключ. Но это ни разу (!) не помешало при создании новых запросов, форм, таблиц и т.д.
Собственно мой вопрос, точнее просьба, заключается в следующем: если кто-то сталкивался с реальной ситуацией, когда поля подстановки в таблицах мешали решить задачу, поделитесь конкретными примерами.
Ответ:
Сообщение от Кефирник
И что сделать ничего нельзя, т.е. преобразовать цифру в выражение
Сообщение от Agapov_stas
и обьясняешь потом человеку пол дня, что, куда и как...
Если Вы были внимательны, то заметили, что я не писал фраз "это не возможно сделать","это сложно сделать"
Это(выводить вместо числового значения - текстовое) абсолютно не сложно делать.Но, смысл "наступать на грабли" на которые, уже неоднократно наступали и в итоге приходили к одному и тому же выводу : "Поля подстановок в таблицах - это есть зло!"
Вопрос: TransferText acExportDelim и имена полей

Люди добрые, конкретно споткнулся и не пойму куда копать! Почему не выгружаются имена полей?!
DoCmd.TransferText acExportDelim, "TEST - спецификация импорта", "test1", "C:\Temp\test2.csv", True, , 1251

Примерчик в аттаче упрощенный, там аналогичный коду макрос для простоты примера. Капец, стоит "С именами полей", но файл выгружается без заголовков!
Я неуч, или дело не в бобине? Пробовал и на Win XP c MSO 2003 и на Win1- c MSO 2010

К сообщению приложен файл (TEST_TransferText.zip - 25Kb)
Ответ:
zimkon
kulib,
У меня норм. А у вас?

Так не сработало

court
kulib,
зайди в редактирование спецификации "TEST - спецификация импорта" и сними флажок "Первая строка содержит имена полей"

И всё сработало! Спасибищще! Я действительно создавал спецификацию на основе импорта файла, чтобы потом использовать ее для экспорта таблицы с аналогичной структурой. Я не знаю где вы это прочитали, но я и чухнуть не мог, что ставя эту галку сам обрекал себя на фиаско!!! Премного благодарен, потому что в бессилье уже начал погрязать в коде. А тут ларчик просто открывался!

Кривцов Анатолий
Интересная ситуация с заголовками. Если спецификация была создана при импорте (связывании) из файла с заголовком, то аргумент HasFieldNames игнорируется. Если такая спецификация используется при экспорте, то всегда (!) создается файл без заголовка.

расскажите пожалуйста где прочитали?