|
|
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Подскажите, как одним селектом выбрать все записи table1 (не больше чем в этой таблице) + добавить поля из другой таблицы table2 по условию (table1.id1=table2.id2), причем для одного значения table1.id1 - во второй таблице записей, удовлетворяющих условию (table1.id1=table2.id2), может быть много (>1) или не быть вообще (тогда естественно добавлять пустые поля, вместо полей table2). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 19:26:27 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 19:28:56 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Код: plaintext 1. 2. Я конечно извиняюсь - но когда я так пробовал - у меня выходило число записей БОЛЬШЕ чем в table1, а мне надо ТОЧНО все записи table1, и ни строкой больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 19:41:33 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
А тогда уточни, какое именно значение (точнее, какую именно запись) из Table2 ты хочешь получить, если условию table1.id1=table2.id2 удовлетворяет больше одной записи в Table2 И кстати, какая версия FoxPro? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 19:51:00 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ВладимирМА тогда уточни, какое именно значение (точнее, какую именно запись) из Table2 ты хочешь получить, если условию table1.id1=table2.id2 удовлетворяет больше одной записи в Table2 И кстати, какая версия FoxPro? Первую попавшуюся запись из Table2. Fox7 - да это и не особенно важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 20:03:41 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ПользовательFox7 - да это и не особенно важно. :-))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 20:15:34 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Redrik ПользовательFox7 - да это и не особенно важно. :-))) "Не учите меня жить - помогите материально!" - на чистом SQL - как такое сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 20:21:26 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Тогда, например, берешь код от ВладимирМ и добавляешь группировку по всем полям первой базы... Если "дублей" там нету... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 00:03:51 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
RedrikТогда, например, берешь код от ВладимирМ и добавляешь группировку по всем полям первой базы... Если "дублей" там нету... Дубли там есть - получаем МЕНЬШЕ записей чем в таблице table1... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 08:02:48 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. Но так делать не рекомендуется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 08:36:20 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ПользовательДубли там есть - получаем МЕНЬШЕ записей чем в таблице table1... Пользовательпричем для одного значения table1.id1 - во второй таблице записей, удовлетворяющих условию (table1.id1=table2.id2), может быть много (>1) Мало того, что у тебя "один-ко-многим" и неважно кого из "многих" ты хочешь видеть в выборке, так выходит, что и table1.id1 не "ключик"??? Т.е. может быть несколько одинаковых table1.id1 , для которых есть куча table2.id2 ? И шо Вы хочете от такой "базы"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 09:41:08 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ПользовательПервую попавшуюся запись из Table2. Fox7 - да это и не особенно важно. Насчет "не важно" - это Вы зря. Для версии меньше VFP9 такое одним запросом не решается. Нужны 2 последовательных запроса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 09:52:47 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Redrik ПользовательДубли там есть - получаем МЕНЬШЕ записей чем в таблице table1... Пользовательпричем для одного значения table1.id1 - во второй таблице записей, удовлетворяющих условию (table1.id1=table2.id2), может быть много (>1) Мало того, что у тебя "один-ко-многим" и неважно кого из "многих" ты хочешь видеть в выборке, так выходит, что и table1.id1 не "ключик"??? Т.е. может быть несколько одинаковых table1.id1 , для которых есть куча table2.id2 ? И шо Вы хочете от такой "базы"? Хотим-не хотим - с чем есть-надо-принесли-поставили-заставили и т.д. - с тем и работаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 12:19:13 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Maltsev Max Код: plaintext 1. 2. 3. 4. 5. Но так делать не рекомендуется Группировка - понятна, Order By 1 - вроде необязательно? и второе- почему не рекомендуется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 12:25:02 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Пользователь Maltsev Max Код: plaintext 1. 2. 3. 4. 5. Но так делать не рекомендуется Группировка - понятна, Order By 1 - вроде необязательно? и второе- почему не рекомендуется? 1) Потому, что в общем случае неясно, из какой именно таблицы будет взято значение Recno() 2) Потому, что в общем случае неясно, какие именно значения полей из Table1 и Table2 будет взяты при одинаковых значениях поля группировки. Кстати, вместо RECNO(), можно сделать просто группировку по Table1.id1 Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 12:51:42 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ВладимирМ ПользовательПервую попавшуюся запись из Table2. Fox7 - да это и не особенно важно. Насчет "не важно" - это Вы зря. Для версии меньше VFP9 такое одним запросом не решается. Нужны 2 последовательных запроса: Можно вопрос: Что надо заменить от девятой версии фокса - (.dll) чтобы 1) фокс7 - работал корректно с join? 2) сторонние программы при работе через ADO Provider=VFPOLEDB.1; - работали корректно с join? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 13:01:54 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ПользовательМожно вопрос: Что надо заменить от девятой версии фокса - (.dll) чтобы 1) фокс7 - работал корректно с join? Ничего. Он и так корректно работает. Просто в VFP9 расширили возможность синтаксиса Select-SQL. Например, там стало возможно использовать подзапросу в директиве FROM, а не только в WHERE, как в младших версиях. Пользователь2) сторонние программы при работе через ADO Provider=VFPOLEDB.1; - работали корректно с join? Да. В пределах ограничений FoxPro. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 13:26:21 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ВладимирМ Пользователь Maltsev Max Код: plaintext 1. 2. 3. 4. 5. Но так делать не рекомендуется Группировка - понятна, Order By 1 - вроде необязательно? и второе- почему не рекомендуется? 1) Потому, что в общем случае неясно, из какой именно таблицы будет взято значение Recno() 2) Потому, что в общем случае неясно, какие именно значения полей из Table1 и Table2 будет взяты при одинаковых значениях поля группировки. ВладимирМ, прав. В Общем случае непонятно откуда будет браться номер строки. Но как показала моя практика берется из главной таблицы (та, которая указана в разделе From), и как я ни бился, заставить Фоксу взять номер строки из дочерней таблицы у меня не получилось ... Order по привычке вставил. Он здесь необязателен. Хотя и не лишний Кстати, вместо RECNO(), можно сделать просто группировку по Table1.id1 Код: plaintext 1. 2. 3. 4. Как я понял из поставленного условия, Table1.id1 -- не уникальный ключ. и вообще в этой таблице нет ключа. Если б был, то все эти извращения с номером строки были бы не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 13:45:35 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Hi Пользователь! Не буду учить тебя жить - тут с этим и так справляются :) Код: plaintext 1. 2. 3. 4. 5. В фоксе пока нету агрегатных функций типа LAST или FIRST - но т.к. тебе без разницы какую запись "присоединять" из второй таблицы - можешь взять MIN или MAX :) P.S. Понятия НОМЕР ЗАПИСИ равно как и понятия "ФИЗИЧЕСКИЙ ПОРЯДОК" не имеют смысла при работе с SQL - упорядочивать или "выбирать одно из многих" можно лишь на основе значений полей. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 15:35:14 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
ПользовательХотим-не хотим - с чем есть-надо-принесли-поставили-заставили и т.д. - с тем и работаем. Имеем: - 1-ая таблица БЕЗ ключа - НЕ ИМЕЕТ значения какую запись из 2-ой таблицы присоединить - нужен ОДИН селект Бессмысслица какая-то... :-( Добавь поле, которое сделаешь ключевым! Иначе ОДНИМ селектом не обойдешься... Или VFP-9... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 16:29:41 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Hi Пользователь! Не буду учить тебя жить - тут с этим и так справляются :) Код: plaintext 1. 2. 3. 4. 5. В фоксе пока нету агрегатных функций типа LAST или FIRST - но т.к. тебе без разницы какую запись "присоединять" из второй таблицы - можешь взять MIN или MAX :) P.S. Понятия НОМЕР ЗАПИСИ равно как и понятия "ФИЗИЧЕСКИЙ ПОРЯДОК" не имеют смысла при работе с SQL - упорядочивать или "выбирать одно из многих" можно лишь на основе значений полей. Posted via ActualForum NNTP Server 1.2 Сначала я возрадовался, а как попробовал (сразу осмыслить что в запросе написано - не получается) - то огорчился. строка: GROUP BY T1.id1, T1.uField1, T1.uField2, ... T1.uFieldX означает уникальность - distinct - по таблице T1 - если ее нет - то съедаются записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 21:49:20 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Maltsev Max Код: plaintext 1. 2. 3. 4. 5. Но так делать не рекомендуется Но (!) раз Maltsev Max рекомендует - надо попробовать: 1) эта штука работает! 2) _NRec - все равны числу строк в таблице table1 (все значения - одно и то же число ! и отсюда совсем непонятно как работает Group By 1 ?) 3) table2.id2 - если их несколько одинаковых - то берется последняя строка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 22:04:49 |
|
||
|
простой запрос: все записи из одной таблицы + поля из другой
|
|||
|---|---|---|---|
|
#18+
Hi Пользователь! Н-да, видать совсем клинический случай :( Если всё так плохо, то без RECNO() и промежуточных запросов (или подзапросов в VFP9) видимо никак не победить... Всё-же на досуге почитай книжки по реляционной теории и сделай нормальную схему данных - работать с правильными структурами легко и приятно - работать с подобным "мусором" мучительно - и без какой-либо гарантии на получение правильного результата... Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 00:09:49 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1594107]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
228ms |
get topic data: |
9ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 555ms |

| 0 / 0 |
