Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Вниз
Можно ли получить соединение наборов данных двух TQuery? Найти похожие ветки
← →
wHammer (2002-12-26 14:02) [0]Именно, не реальных таблиц, и не просмотров (VIEW), а то что отобрал Select в TQuery.
С наилучшими...
Александр.
← →
Johnmen (2002-12-26 14:05) [1]Если имеется в виду JOIN, то нет...
← →
Lady D (2002-12-26 14:09) [2]Соединение двух запросов в TQuery:
SELECT ...
UNION ALL
SELECT ...
← →
Johnmen (2002-12-26 14:15) [3]>Lady D © (26.12.02 14:09)
Маша, не надо путать соединение с объединением...
← →
wHammer (2002-12-26 14:21) [4]Спасибо, теперь полностью убежден, а так были сомнения. Еще один вопрос - при закрытии программы происходит автоматически DROP VIEW для просмотра или нет.
С наилучшими...
Александр.
← →
Val (2002-12-26 14:24) [5]>wHammer © (26.12.02 14:21)
????
← →
passm (2002-12-26 14:26) [6]wHammer © (26.12.02 14:21)> Нет, конечно.
← →
Johnmen (2002-12-26 14:27) [7]Нет, конечно ! Ведь это объект БД !
← →
Val (2002-12-26 14:30) [8]>passm © (26.12.02 14:26)
без пояснения автора обсуждение бесполезно.
поскольку, например, я могу в OnClose главной формы сделать это удаление - чем не автоматическое? ;)
← →
wHammer (2002-12-26 14:32) [9]to Johnmen © (26.12.02 14:27)
Прошу прощения, просто никогда не приходилось использовать. Но ведь просмотр это не реальная таблица в БД, а виртуальная, в моем представлении, это таблица в памяти????? И что тогда происходит, если я закрываю приложение не выполнив DROP?
С наилучшими...
Александр.
← →
Lady D (2002-12-26 14:33) [10]Johnmen © (26.12.02 14:15)
>Lady D © (26.12.02 14:09)
Маша, не надо путать соединение с объединением...
Ув. Johnmen, что Вы этим хотели сказать? Это синонимы. И не только в русском языке:
join
2. сущ.
1)
а) соединение линия, плоскость соединения
Syn:
joint 1.
б) стык, паз, шов и т. п. (место соединения)
в) линия (соединяющая точки), плоскость соединения
2) объединение; пересечение
Syn: union
← →
wHammer (2002-12-26 14:35) [11]Еще раз прошу прощения, не кидайте сильно в меня камнями, в литературе кот. у меня имеется не все ясно, а спросить не у кого, т.к. коллеги пишут кто на чем, но только не на Delphi.
← →
passm (2002-12-26 14:39) [12]Val © (26.12.02 14:30)> В данном случае это будет для пользователя автоматическое удаление, но никак не для программиста.
← →
Val (2002-12-26 14:40) [13]>wHammer © (26.12.02 14:32)
следует почитать теорию БД - view это реальные метаданные, являющеся, как срезами отдельных таблиц/просмотров, так и "собранными" из нескольких, а не таблица в памяти.
IB, кстати, имеет относительно небольшое разрешение на количество пересозданий объектов метаданных, восстанавливается счетчик только после backup\restore.
Так что оставьте просмотры в покое :)
← →
Val (2002-12-26 14:42) [14]>passm © (26.12.02 14:39)
это была шутка, кстати тут не шла речь о том, для кого это действие автоматическое также , поэтому, собственно, я и просил пояснения у автора вопроса.
← →
Johnmen (2002-12-26 14:46) [15]>Lady D ©
По жизни они синонимы, а вот в программировании - нет !
Абсолютно разные вещи...)))
>wHammer ©
Просто тебе надо разобраться, что такое VIEW.
Почитай документацию по IB. Там достаточно понятно...:)))
← →
passm (2002-12-26 14:48) [16]Val © (26.12.02 14:40)> IB, кстати, имеет относительно небольшое разрешение на количество пересозданий объектов метаданных, восстанавливается счетчик только после backup\restore
:-\ С IB не приходилось работать,.. но интересно было бы узнать чем обосновано такое ограничение.
← →
Lady D (2002-12-26 14:55) [17]
> >Lady D ©
>
> По жизни они синонимы, а вот в программировании - нет !
> Абсолютно разные вещи...)))
Я знаю что такое Join и Union в SQL, Johmen, но из вопроса этого не было видно. Вы представили свою версию, а я свою. Вот и все. Зачем так напрягаться и обучать меня прописным истинам? Кстати, что Вы скажете насчет этого?
http://delphi.mastak.ru/cgi-bin/forum.pl?n=1&look=1&id=1040867978&from=20
Вы, кажется там тоже участвовали?
← →
wHammer (2002-12-26 15:00) [18]to Val © (26.12.02 14:40)
В данный момент работаю с форматом Paradox.
То есть просмотр это НЕ ВИРТУАЛЬНАЯ ТАБЛИЦА (хотя так написано в книге "Delphi 5 Руководство разработчика баз данных. Шумаков П.В., Фаронов В.В."). Тогда пожалуй проще будет создать реальную "временную" таблицу CREATE TABLE и затем ее удалить, чем пользоваться VIEW, вообщем как раньше, например в PAL.
С наилучшими...
Александр.
← →
passm (2002-12-26 15:07) [19]wHammer © (26.12.02 15:00)> Грубо говоря, просмотр - некий SELECT, лежащий в БД. И, когда идет запрос к просмотру, фактически исполняется
SELECT...
FROM (SELECT...) AS VIEW_NAME
...
← →
Val (2002-12-26 15:12) [20]>passm © (26.12.02 14:48)
Отрывок..:
В таблице RDB$FORMATS есть счетчик изменений, но он ограничен количеством 256. Когда счетчик достигнет этого значения, то дальнейшие изменения метаданных будут невозможны, пока не будет выполнена операция backup/restore.
Полнее вам расскажут более искушенные в работе с данным сервером люди.
>wHammer © (26.12.02 15:00)
в топике есть упоминание о IB5. вы говорите о drop view - из этого следуют однозначные выводы что речь о IB, поскольку в Local SQL, с помощью которого вы работаете(мое предположение) с Парадоксом, понятие просмотра...кхе, посмотрите сами в хелпе к нему(Local SQL) и убедитесь, что там предлагается по поводу view.
Но, коллеги, кажется мы отошли от темы вопроса, каждый в своем споре.
Уважаемый автор, конкретизируйте пожалуйста, стоящую перед вами задачу, дабы можно было предлагать решения.
← →
wHammer (2002-12-26 15:25) [21]to Val © (26.12.02 15:12)
> Уважаемый автор, конкретизируйте пожалуйста, стоящую перед вами задачу, дабы можно было предлагать решения.
ОК. С помощью нескольких операторов Select, каждый в своем TQuery, сделана выборка данных, причем в некоторых из них сделана группировка, эти данные, в свою очередь используются для различных расчетов и т.д. Заказчик попросил для удобства вывести все эти Select в одну таблицу (т.е. просто Grid) read only. Общие (по структуре) во всех таблицах три поля NameIzd, IDFilial, DDate. Мне нужно соеденить эти таблицы(а по сути это не таблицы, а результаты выборки Select) по этим полям. Сделать это для меня не проблема, только каким путем пойти, что будет оптимальней??? Еще раз повторюсь, формат таблиц Paradox.
С наилучшими...
Александр.
← →
Lady D (2002-12-26 15:30) [22]
> Заказчик попросил для удобства вывести все эти Select в
> одну таблицу (т.е. просто Grid) read only. Общие (по структуре)
> во всех таблицах три поля NameIzd, IDFilial, DDate.
Так вот на этот раз я оказалась права :-) UNION ALL.
Johnmen! Жду извинений.
← →
passm (2002-12-26 15:37) [23]Lady D © (26.12.02 15:30)> <Johnmen © (26.12.02 14:05)> прав.
← →
Val (2002-12-26 15:39) [24]>wHammer © (26.12.02 15:25)
действительно, тогда прислушайтесь к предложению Lady D ©.
← →
wHammer (2002-12-26 15:40) [25]to Lady D © (26.12.02 15:30)
Прошу прощения но UNION это совсем не то, в моем случае. Во первых все-таки Join, а во-вторых UNION объеденяет только ОДИНАКОВЫЕ по структуре данные.
← →
Lady D (2002-12-26 15:40) [26]2passm © (26.12.02 15:37)>
В чем это он прав? В том, что JOIN не подойдет? Я говорю о правильном толковании вопроса и выдаче ответа.
← →
Reindeer Moss Eater (2002-12-26 15:42) [27]В том, что JOIN не подойдет?
Ни разу не подойдет.
Именно, не реальных таблиц, и не просмотров (VIEW), а то что отобрал Select в TQuery.
← →
Val (2002-12-26 15:43) [28]опять предположения разошлись :))
>wHammer © (26.12.02 15:25)
покажите нам на небольшом примере с данными, что ли, что точно нужно :)
← →
Lady D (2002-12-26 15:44) [29]2 Reindeer Moss Eater (26.12.02 15:42)>
> В том, что JOIN не подойдет?
>
> Ни разу не подойдет.
Это Вы мне? Или все таки Johnmen"у ...
← →
passm (2002-12-26 15:45) [30]wHammer © (26.12.02 15:40)> Можно попробовать привести данные в отдельных запросах к одинаковой структуре.
Lady D © (26.12.02 15:40)> Когда говорят соединение подразумевается JOIN; когда говорят объединение подразумевается UNION.
← →
Reindeer Moss Eater (2002-12-26 15:45) [31]Вам Вам, Lady D
← →
Lady D (2002-12-26 15:48) [32]2 passm © (26.12.02 15:45)>
> Lady D © (26.12.02 15:40)> Когда говорят соединение подразумевается
> JOIN; когда говорят объединение подразумевается UNION.
Ну, вот, еще один "учитель".
Цитирую себя еще раз: Lady D © (26.12.02 14:33)
← →
Reindeer Moss Eater (2002-12-26 15:49) [33]Ну, вот, еще один "учитель".
У Вас дни трудные, леди?
← →
Lady D (2002-12-26 15:50) [34]
> Reindeer Moss Eater (26.12.02 15:45)
> Вам Вам, Lady D
Вы вообще веточку то эту читали? Укажите мне где я советовала JOIN.
← →
Lady D (2002-12-26 15:51) [35]
> Reindeer Moss Eater (26.12.02 15:49)
> Ну, вот, еще один "учитель".
> У Вас дни трудные, леди?
Это у Вас трудные. Ягель видимо снегом засыпало :-)
← →
Reindeer Moss Eater (2002-12-26 15:53) [36]У меня их не бывает по определению
← →
MsGuns (2002-12-26 15:55) [37]>wHammer ©
Для выполнения многошаговых запросов в Paradox нельзя, к сожалению, использовать транзакции, а как следствие, теряют свой смысл хранимые процедуры. Я в таких случаях использую суррогатные скрипты, т.е. есть модуль, который делает многоступенчатые расчеты, берет очередной запрос из некоего текстового файла, подготовленного заранее в определенном формате (кроме SQL там есть "мои" операторы, например, для подстановки параметров). Модуль тупо выполняет все запросы из этого скрипта-файла и возвращает (или не возвращает, если была коррекция БД) НД, который я и "засовываю" в грид.
Трудно этот метод назвать оптимальным, но для парадокса ничего лучшего я не нашел.
← →
passm (2002-12-26 15:56) [38]Lady D © (26.12.02 15:48)> Вобщем, ты права, по образованию я учитель. Но. Сначала был вопрос: Можно ли получить соединение наборов данных двух TQuery?. В котором не встречается слово JOIN. Таким образом Johnmen опирается на слово
соединение .
← →
wHammer (2002-12-26 16:01) [39]Ребят не ругайтесь пожалуйста из-за меня.
Не буду показывать все запросы (5), покажу лишь 2 Query, которые нужно соеденить.
TQuery1.SQL
select IDFilial, DateOtgr, NameIzd, sum(Kol) as KolSum
from PlanProdajFilial
where (IDFilial = :fFilial) and (DateOtgr = :fDate)
group by IDFilial, DateOtgr, NameIzd
TQuery1.SQL
select * from OstatkiFilialF
where (IDFilial = :fFilial) and (DateR = :fDate)
Нужно показать пользователю следующее (выборка(фильтр) данных по IDFilial и по DateXXXXX), шапка:
NameIzd | Ostatok | PlanProdaj |
С наилучшими...
Александр.
← →
Lady D (2002-12-26 16:04) [40]2 passm © (26.12.02 15:56)>
> Таким образом Johnmen опирается на слово
> соединение .
Соединяйтесь...
In nomine Patris, et Filli, et spiritus Sancti... Amen
← →
Reindeer Moss Eater (2002-12-26 16:04) [41]Ветку надо закрыть, ибо условие вопроса изменилось кардинальным образом
← →
passm (2002-12-26 16:10) [42]wHammer © (26.12.02 16:01)> Во втором запросе конкретизируй заголовок (замени * на перечень столбцов). Тогда будет понятней.
Lady D © (26.12.02 16:04)> Глупо.
← →
wHammer (2002-12-26 16:13) [43]Да, неучел, сорри...
Будет что-то вроде -
select IDFilial, DateR, NameIzd, Ostatok from OstatkiFilialF
where (IDFilial = :fFilial) and (DateR = :fDate)
← →
passm (2002-12-26 16:38) [44]wHammer © (26.12.02 16:13)> Попробуй:
select IDFilial, DateOtgr, NameIzd, sum(Kol) as Summa,
(select Ostatok
from OstatkiFilialF as q2
where (IDFilial = :fFilial) and (DateR = :fDate)
and q1.IDFilial = q2.IDFilial
and q1.DateOtgr = q2.DateOtgr
and q1.NameIzd = q2.NameIzd) as Ostatok
from PlanProdajFilial as q1
where (IDFilial = :fFilial) and (DateOtgr = :fDate)
group by IDFilial, DateOtgr, NameIzd
← →
Lady D (2002-12-26 17:16) [45]Извиняюсь, что мешаю вам "соединяться", но может это будет ближе к истине?
SELECT CAST(idfilial as..),
CAST(dateotgr as..) d,
CAST(nameizd as..),
CAST( SUM(Kol) as..) OSTATOK
FROM planprodajfilial
WHERE (idfilial = :ffilial1) AND (dateotgr = :fdate1)
GROUP BY idfilial, dateotgr, nameizd
UNION ALL
SELECT CAST(idfilial as..),
CAST(dater as..) d,
CAST(nameizd as..),
CAST(ostatok ..)
FROM ostatkifilialf
WHERE (idfilial = :ffilial2) AND (dater = :fdate2)
← →
passm (2002-12-26 17:30) [46]Lady D © (26.12.02 17:16)> Не к истине, а к потребностям автора вопроса :)
← →
Lady D (2002-12-26 17:35) [47]2passm © (26.12.02 17:30)>
Послушайте, товарищ учитель, Ваш бред вполне можно переписать с использованием JOIN
← →
Lady D (2002-12-26 17:42) [48]2passm © (26.12.02 17:30)>
Это, видимо, в соответствии с "потребностями автора вопроса" Вы ему советовали TRxQuery для работы с MySQL?
http://delphi.mastak.ru/cgi-bin/forum.pl?n=1&look=1&id=1040888468&from=41
← →
passm (2002-12-26 17:43) [49]passm © (26.12.02 17:30)> Поменьше спеси, plz. Дерзните, посмотрим на ваше рукоделие...
← →
Lady D (2002-12-26 17:49) [50]
> passm © (26.12.02 17:43)> Поменьше спеси, plz. Дерзните,
> посмотрим на ваше рукоделие...
А зачем? Прислушайтесь к тишине в этой ветке... Это потому, что все (кроме...) давно поняли: я права. Ну, все, мне это наскучило. Когда уже модератор удалит ветку?
← →
passm (2002-12-26 17:56) [51]Lady D © (26.12.02 17:49)> О да! Ты самая умная, красивая, скромная... Вобщем, успокойся и спи спокойно. (Пардон за тавтологию.)
← →
Lady D (2002-12-26 18:13) [52]passm © (26.12.02 17:56)>
>Ты самая умная, красивая,
> скромная...
Точно, так и есть.
Вобщем, успокойся и спи спокойно. (Пардон за
> тавтологию.)
Вот это мне и не нравится, когда каждый при..ок поучает меня и говорит что я должна делать. Если замечание по делу - не вопрос, а так... Не трогай меня и тебе будет счастье.
← →
passm (2002-12-26 18:21) [53]Lady D © (26.12.02 18:13)> Мадам, откуда в вас столько спеси? Предлагаю перейти на личную переписку, дабы не засорять форум. Пишите ваши замечания на passm@mail.ru
Не трогай меня и тебе будет счастье Боже упаси :)))
← →
VAleksey (2002-12-27 07:24) [54]
> Lady D © (26.12.02 18:13)
Вы правы
> passm © (26.12.02 18:21)
В данном случае она правильно советовала.
← →
Johnmen (2002-12-27 09:37) [55]>Lady D © (26.12.02 14:55)
>Зачем так напрягаться и обучать меня прописным истинам?
>Lady D © (26.12.02 15:30)
>Так вот на этот раз я оказалась права :-) UNION ALL.
>Johnmen! Жду извинений.
Дорогая Маша ! Напрягаться я перестал 10 лет назад. И обучать Вас не собирался. Вы просто мнительны.
Еще раз прошу прощения, но в Вашем возрасте можно уже оставить юношеско-задиристый тон высказываний...
С уважением, Johnmen.
← →
wHammer (2002-12-27 09:52) [56]to Lady D © (26.12.02 17:16)
Ваш запрос привел к такому виду:
select q1.IDFilial, q1.DateOtgr, q1.NameIzd, sum(q1.Kol) as Summa,
(select q2.Ostatok
from OstatkiFilialF as q2
where (q2.IDFilial = 0) and (q2.DateR = "01.01.03")
and (q2.NameIzd = q1.NameIzd)) as OstatokF
from PlanProdajFilial as q1
where (q1.IDFilial = 0) and (q1.DateOtgr = "01.01.03")
group by q1.IDFilial, q1.DateOtgr, q1.NameIzd
Выполняется, однако, ума не приложу, что не так, в поле OstatokF не попадает сообственно, нужное значение. ???
С наилучшими...
Александр.
← →
wHammer (2002-12-27 09:54) [57]Сорри, вопрос не к Lady D © (26.12.02 17:16), а к passm © (26.12.02 16:38)
← →
passm (2002-12-27 10:13) [58]wHammer © (27.12.02 09:52)>
select q1.IDFilial, q1.DateOtgr, q1.NameIzd, sum(q1.Kol) as Summa,
(select q2.Ostatok
from OstatkiFilialF as q2
where (q2.IDFilial = q1.IDFilial) and (q2.DateR = q1.DateOtgr)
and (q2.NameIzd = q1.NameIzd)) as OstatokF
from PlanProdajFilial as q1
where (q1.IDFilial = 0) and (q1.DateOtgr = "01.01.03")
group by q1.IDFilial, q1.DateOtgr, q1.NameIzd
Извини, но так приятнее :)
Может, не хватает еще какого-то условия для q2?
← →
wHammer (2002-12-27 10:21) [59]Да нет в условиях все ОК вроде. Попробовал сделать соответствующий вопрос в QBE, что в Database Desktop. Пошёл гад Ж:) Выглядит след. образом:
SELECT DISTINCT D.DateOtgr, D.NameIzd, D.IDFilial, D1.Ostatok, SUM(D.Kol) AS SumKol
FROM "PlanProdajFilial.DB" D, "OstatkiFilialF.DB" D1
WHERE
(D.DateOtgr = "01/01/2003")
AND (D.IDFilial = 0)
AND (D1.DateR = D.DateOtgr)
AND (D1.IDFilial = D.IDFilial)
AND (D1.NameIzd = D.NameIzd)
GROUP BY D.DateOtgr, D.NameIzd, D.IDFilial, D1.Ostatok
ORDER BY D.DateOtgr, D.NameIzd, D.IDFilial, D1.Ostatok
Но все-равно огромное спасибо за помощь!
С наилучшими...
Александр.
← →
passm (2002-12-27 10:32) [60]wHammer © (27.12.02 10:21)> Всегда пожалуйста :)
Результат этот запрос должен дать верный. Не приводил его тебе, поскольку не нравится лишнее поле в группировке (D1.Ostatok).
← →
Lady D (2002-12-27 10:36) [61]2 Johnmen © (27.12.02 09:37)>
> ..но в Вашем возрасте можно уже оставить
> юношеско-задиристый тон высказываний...
Как говорил здесь один "кушальщик ягеля", "на основании чего Вы сделали свое предположение" о моем возрасте? Если Вы про анкету, то посмотрите на мою "дату рождения" и ту, которая дается в примере. А Вы Johnmen не джентльмен, если способны заявить такое даме.
За сим я с вами прощаюсь. Хочу выразить благодарность:
- Anatoly Podgoretsky
- Игорь Шевченко
- Юрий Зотов
- MBo
- Song
- han_malign
- Alexandr
- MsGuns
и, последний, но не в последнюю очередь...
- Reindeer Moss Eater :-)
Это те, в ответах, которых можно найти много смысла. Спасибо.
← →
Johnmen (2002-12-27 10:54) [62]>Lady D © (27.12.02 10:36)
Ну коли и с датами не все ладно, то и в половой принадлежности можно усомниться :)) (к вопросу о джентельменстве...)
"Ну что ж, простимся, так и быть,
Минута на пути.
Я не хотел тебя любить,
Прости меня, прости..."
← →
Prooksius (2002-12-27 10:56) [63]Lady D © (27.12.02 10:36)
Все сюде за чем-то приходят. Кто-то - за помощью, кто-то - за тем, чтобы помочь, а кто-то - за признанием своей крутизны.
Ты же здесь пытаешься помочь человеку своими знаниями. Правильно?
А получается, что ты ищешь признания своих суперзнаний и умений. Чтобы сказали вот, мол, какая она навороченная...
Проще надо быть. :)
2 moderator
знаю, офтопик, но жаль нашу Леди Ди :))
← →
passm (2002-12-27 10:57) [64]Johnmen © (27.12.02 10:54)> 10 баллов!
← →
Prooksius (2002-12-27 11:00) [65]2 Johnmen © (27.12.02 10:54)
> Ну коли и с датами не все ладно, то и в половой принадлежности
> можно усомниться :)) (к вопросу о джентельменстве...)
Та леди она, леди... :))
← →
Reindeer Moss Eater (2002-12-27 11:05) [66]Леди, оставайтесь с нами!
Не знаю как остальные, но я больше не буду.
Честное новогоднее! :)
(Пожиратель ягеля)
← →
Johnmen (2002-12-27 11:16) [67]>Reindeer Moss Eater (27.12.02 11:05)
Конечно, пусть остается ! Ведь мы же не злобные монстры какие-нибудь !!!
>ALL
Давайте будем сдержанней и, главное, терпимее !
← →
Eugene_S (2002-12-28 04:48) [68]Армянское радио спрашивают:
–Что общего м/у морской свинкой и программисткой?
–Морская свинка не имеет ни какого отношения к морю…
После интеллектуальной пикировки Lady<–>Johnmen(IMHO nick Gentleman здесь было бы уместней) подумалось, что на вопросы АРМ. Радио отвечал женофоб и мужефил Педрос Педрилосян.
Для нахождения TRUE-стины предлагаю next struct:
Case форум.мнение of
Lady:
If ((your “CHEST” = 90) And (your “CHESTь” not поругана)) And
(your “TALIA” = 60) And
(your “SOFT HEAP” = 90) And
(your “BRAIN STACK” is MIN) And
(you haven’t critical loops now) then
mailto:plastic@irmail.ru
else (ready to JOIN to you but only programmaticaly);
Johnmen:
Begin
{Однажды «Великий» дельфийский мудрец по прозвищу «Джон мужицкий сын» процитировал на форуме «Великого Программера», мол: SQL, School and
Cool – СЛОВА ОДНОКОРЕННЫЕ, очевидно призывая к объединению, чтоб ему скулы свело. Ни чего личного!}
Байтописьцы усих краин – геть до куевой хучи;
i.e. программеры дельфи – let’s UNION ALL on SQL world;
Happy end;
A это еще не end; // of case of cause, because to be continued….
С Новым Годом Всех Мастеров!
← →
Vovkin (2002-12-28 16:37) [69]есть такой компонент XQuery, он представляет собой локальный движек SQl, т.е. ему можно на вход подать несколько DataSet и уже внутри выполнить по ним запрос прямо в программе, не обращаясь к серверу, но на больших объемах данных это не приемлемо (хотя объемы можно сократить, оптимально сформировав исходные DataSet-ы), по-моему это как раз то что Вам и нужно, поскольку движек локальный, то ему пофиг, откуда будут тянуться исходные датасеты, хоть с разных серверов
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.012 c