Несколько внутренних объединений в операторе выбора возвращают несколько записей, но должны возвращать только одну

Изменить: добавлен скрипт Bash.

Ответы, приведенные здесь, работали частично для меня; В кеше осталось много больших файлов. Что в конечном итоге сработало (после часа в #git на freenode):

git clone --no-hardlinks file:///SOURCE /tmp/blubb
cd blubb
git filter-branch --subdirectory-filter ./PATH_TO_EXTRACT  --prune-empty --tag-name-filter cat -- --all
git clone file:///tmp/blubb/ /tmp/blooh
cd /tmp/blooh
git reflog expire --expire=now --all
git repack -ad
git gc --prune=now

С предыдущими решениями размер хранилища составлял около 100 МБ. Это снизило его до 1,7 МБ. Возможно, это помогает кому-то:)


Следующий скрипт bash автоматизирует задачу:

!/bin/bash

if (( $# < 3 ))
then
    echo "Usage:   $0 </path/to/repo/> <directory/to/extract/> <newName>"
    echo
    echo "Example: $0 /Projects/42.git first/answer/ firstAnswer"
    exit 1
fi


clone=/tmp/${3}Clone
newN=/tmp/${3}

git clone --no-hardlinks file://$1 ${clone}
cd ${clone}

git filter-branch --subdirectory-filter $2  --prune-empty --tag-name-filter cat -- --all

git clone file://${clone} ${newN}
cd ${newN}

git reflog expire --expire=now --all
git repack -ad
git gc --prune=now
-1
задан Umut Savas 30 March 2019 в 21:44
поделиться

1 ответ

В соответствии с таблицей бронирования на вашем первом изображении, ваши бронирования никак не связаны с местами, только с людьми.

Вам нужно иметь другую таблицу, которая связывает резервирование с идентификаторами мест. Конечно, вы можете просто добавить столбец идентификатора места в таблицу бронирования, но, очевидно, это создаст проблемы, когда человек зарезервирует более 1 места.

Также обратите внимание, что, хотя другие ваши таблицы кажутся вполне правильными, они громоздки для запросов, которые вы, похоже, делаете по ним, об этом свидетельствует большее количество необходимых внутренних объединений. Возможно, имеет смысл потерять таблицу строк и просто идентифицировать каждое место с помощью столбца строк.

После добавления таблицы зарезервированных мест, которая может быть чем-то простым:

Idreservation,
Idseat

Затем вы можете получить места для бронирования по:

Select rowletter, seat_number from seats
Where idseat in (select idseat from reserved_seats where idreservation=the reservation you are checking now)

Это предполагает Вы переместили Rowletter к столу сидений.

0
ответ дан Gnudiff 30 March 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: