Параллельные SQL-запросы с выровненными данными в MS Access - PullRequest
0 голосов
/ 07 февраля 2011

У меня три стола, фрукты, человек и овощи

лицо

personID personName
-------- ----------
1        Ken

Фрукты

personID fruitname
-------- -----
1        apple
1        orange

Растительное

personID vegetableName
-------- -------------
1        carrot
1        tomato
1        potato

И я хочу, чтобы вывод был таким ...

personName fruitName vegetableName
---------- --------- -------------
1          apple     carrot
1          orange    tomato
1                    potato

Это уменьшает дублирование выходов .. это вообще возможно? может когда я попробовал это раньше значения повторяются? Это способ избежать этого?

1 Ответ

2 голосов
/ 07 февраля 2011

Это возможно только в том случае, если вы также добавили столбец «позиция» в таблицы фруктов и овощей и используете его в качестве дополнительного столбца соединения.

Записи не сортируются в SQL.Итак, если вы хотите отсортировать, вам ВСЕГДА нужны критерии сортировки, потому что стандарт SQL не предписывает какой-либо порядок сортировки, в противном случае.

Если есть порядок сортировки по алфавиту, вы можете динамически добавить столбец позициичем-то вроде этого (не будет работать в MS ACCESS, но сработает нечто подобное):

 SELECT f1.personid, f1.fruitname, count(*) as position
   FROM fruit f1 outer join fruit f2 on f1.fruitname = f2.fruitname 
                                    and f1.personid = f2.personid  
  WHERE f2.fruitname < f1.fruitname
  GROUP BY f1.personid, f1.fruitname

Этот запрос имеет позицию, начиная с 0, с именами «до».

Теперь вы можете сделать что-то вроде:

select f.personid, f.fruitname, v.vegetablename 
  from (*fruitquery*) f outer join (*vegetaryquery*) v on f.personid = v.personid
                                                      and f.positionid = v.positionid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...