powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / аналог MySQL-евого php-api mysql_field_table для Postgres
18 сообщений из 18, страница 1 из 1
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33108968
mrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет АЛЛ!

Сталкивался ли кто с такой проблемой: нужно узнать к какой таблице принадлежит i-e поле выборки...В МуСкл-пхп это делалось с помощью
mysql_field_table($result,$idx)

Спасибо!
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33109028
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.sql.ru/forum/actualthread.aspx?tid=189696
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33109921
mrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vfabrhttp://www.sql.ru/forum/actualthread.aspx?tid=189696

Конечно,- спасибо за то что "не прошел мимо", не это не в тему...
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33109941
Meta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может тоже не в тему, но очень интересует :)
А для какой цели можно использовать такую функцию? (примерчик, если можно)
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110147
mrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MetaМожет тоже не в тему, но очень интересует :)
А для какой цели можно использовать такую функцию? (примерчик, если можно)
Если коротко:
Примером получил ты выборку из _нескольких_ таблиц и нада определить таблицу, из которой было выбрано _даное_ поле.

Если, использовать имена полей "таблица.поле" то это как-бы решает проблему...

Но меня *интересует* аналог субж для Постгрес.
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110263
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PostgreSQL docs PQftable
Returns the OID of the table from which the given column was fetched. Column numbers start at 0.
Oid PQftable(const PGresult *res, int column_number);

Так что принципиально возможность есть, но вот чего нет [ здесь так это вызова PQftable :)

Решение для кодоманька - добавить в ext/pgsql.c реализацию функции pg_field_table и пересобрать PHP
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110281
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select categry_name || ' ' || product_name as full_product_name from products join categories using (category_id)

к какой таблице принадлежит поле full_product_name?
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110320
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatselect categry_name || ' ' || product_name as full_product_name from products join categories using (category_id)

к какой таблице принадлежит поле full_product_name?
Поле full_product_name не принадлежит никакой таблице, а принадлежит оно безымянному отношению, порождению SELECT'а :)
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110322
Meta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBatselect categry_name || ' ' || product_name as full_product_name from products join categories using (category_id)

к какой таблице принадлежит поле full_product_name?
Респект! 10 баллов!
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110330
Meta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если честно, то это бред... покажите мне реальную задачу, где бы понадобилось вычислять, какой таблице принадлежит поле результата запроса!
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110341
Meta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
SELECT * FROM krivie_ru4ki, ploho_rabotayushaya_golova, len'_nesusvetnaya WHERE...
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110758
vfabr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ссылку я привел тк там рассмотрена очень похожая задача. если надо какие-то метаданные то это прямиком в системные таблицы это раз.

второе то что вы хотите по моему тоже нафик никому не нужно

и третье
doelling_at_publicform_dot_de
12-Nov-2004 06:08
Similarly to the behaviour described by cptnemo this function returns only the name of the first table when you use a JOIN.
For example with the query below the table name would be table1 for all fields:

SELECT table1.*, table2.this_thing, table3.that_thing FROM table1 LEFT JOIN table2 ON table1.tb2_id = table2.id LEFT JOIN table3 ON table1.tb3_id = table3.id

The expected behaviour would be, that the table name for the field this_thing is table2 and table3 for the field that_thing respectively.
cptnemo
15-Aug-2004 06:18
When trying to find table names for a (My)SQL query containing 'tablename AS alias', mysql_field_table() only returns the alias as specified in the AS clause, and not the tablename

взято с сайта php.net
простите сам не проверял но не удивлюсь что так оно и есть ;-) как вы этим пользовались ума не приложу ....
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33110894
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2mrix
Сорри. А у тебя нет доступа к базе? Ты её кракаешь?
Просто в противном случае заведи поле в выборке, в котором и будешь хранить, все, что нужно.
По-моему, кроме как для крака, особо не к чему применить сабж. Я могу ошибаться.
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33111354
mrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Funny_Falcon2mrix
Сорри. А у тебя нет доступа к базе? Ты её кракаешь?

Нет, не кракаю;)
Funny_Falcon
Просто в противном случае заведи поле в выборке, в котором и будешь хранить, все, что нужно.
По-моему, кроме как для крака, особо не к чему применить сабж. Я могу ошибаться.

Пожалуйста, подробней про "заведи поле в выюлрке".

Спасибо!
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33111625
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
единственно, когда мне требовалось найти имя таблицы - запрос к предку иерархии, после которого (или в котором) нужно получать инфу из полей потомков, "дополнительных" к наследуемым (у меня в потомках были одноименные поля разного типа). Но там просто в перечень полей добавляешь поле xxx.tableoid а если нужно имя таблицы, то связку вида
Код: plaintext
 JOIN pg_class c  ON ((c.oid = v.tableoid ))) 
, а уж по
Код: plaintext
1.
CASE 
            WHEN (c.relname = 'child1'::name ) THEN (child1.value )::text  
разбираешь возврат нужного значения из потомка, (кастя в общий приемлемый тип).
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33111918
mrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так что принципиально возможность есть, но вот чего нет [ здесь так это вызова PQftable :)

Решение для кодоманька - добавить в ext/pgsql.c реализацию функции pg_field_table и пересобрать PHP

Круто!

Только жаль что оно работать будеть лишь у меня, что не соответствует требованиям...
Или может предложить вколючить ее в официальную версию? :)
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33111926
mrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
4321единственно, когда мне требовалось найти имя таблицы - запрос к предку иерархии, после которого (или в котором) нужно получать инфу из полей потомков, "дополнительных" к наследуемым (у меня в потомках были одноименные поля разного типа). Но там просто в перечень полей добавляешь поле xxx.tableoid а если нужно имя таблицы, то связку вида
Код: plaintext
 JOIN pg_class c  ON ((c.oid = v.tableoid ))) 
, а уж по
Код: plaintext
1.
CASE 
            WHEN (c.relname = 'child1'::name ) THEN (child1.value )::text  
разбираешь возврат нужного значения из потомка, (кастя в общий приемлемый тип).

Жаль, но я ничего не понял...
...
Рейтинг: 0 / 0
аналог MySQL-евого php-api mysql_field_table для Postgres
    #33113039
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2mrix

Приведи хоть вариант запроса и что тебе там нужно выцепить, а то вариантов очень много. Например, простейший для union:

Код: plaintext
1.
2.
select 'first' as tablename,first.* from first
union
select 'second' as tablename,second.* from second;

И так далее. Может это чуть медленнее, чем хитровы..нутые функции,
зависящие от сервера, но по-моему, несколько логичнее, или как говорят
англоязычные: clearer - яснее, менее запутанно.

Я могу ошибаться.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / аналог MySQL-евого php-api mysql_field_table для Postgres
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]