Вам нужно отдать URLConnection
на HttpURLConnection
и указать ему, чтобы он не выполнял переадресацию, установив HttpURLConnection#setInstanceFollowRedirects()
на false
. Вы также можете установить его глобально с помощью HttpURLConnection#setFollowRedirects()
.
Вам нужно только обработать переадресацию. Проверьте код ответа на HttpURLConnection#getResponseCode()
, захватите заголовок Location
с помощью URLConnection#getHeaderField()
и затем запустите новый HTTP-запрос.
LEFT JOIN
и RIGHT JOIN
типы OUTER JOIN
с.
INNER JOIN
значение по умолчанию - строки от обеих таблиц должны соответствовать условию объединения.
Простой Пример : Позволяет говорят, что Вы имеете Students
таблица, и Lockers
таблица. В SQL первая таблица, которую Вы определяете в соединении, Students
, таблица LEFT , и второй, Lockers
, таблица RIGHT .
Каждый студент может быть присвоен блокировщику, таким образом, существует LockerNumber
столбец в Student
таблица. Больше чем один студент мог потенциально быть в единственном блокировщике, но особенно в начале учебного года, у Вас могут быть некоторые входящие студенты без блокировщиков и некоторых блокировщиков, которые не имеют никаких присвоенных студентов.
Ради этого примера, позволяет, говорят, что Вы имеете 100 студентов , 70 из которых имеют блокировщики. У Вас есть [в общей сложности 1 133] 50 блокировщиков , 40 из которых имеют по крайней мере 1 студента и 10 блокировщиков, не имеют никакого студента.
ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ эквивалентно" , показывают мне всех студентов с блокировщиками ".
Любые студенты без блокировщиков или любых блокировщиков без студентов отсутствуют.
Возвраты 70 строк
ОСТАВЛЕННЫЙ ВНЕШНЕЕ ОБЪЕДИНЕНИЕ были бы" , показывают мне всех студентов, с их соответствующим блокировщиком, если у них есть один ".
Это могло бы быть общим студенческим списком или могло использоваться для идентификации студентов без блокировщика.
Возвраты 100 строк
ПРАВИЛЬНОЕ ВНЕШНЕЕ ОБЪЕДИНЕНИЕ было бы" , показывают мне все блокировщики и студентов, присвоенных им, если существуют какие-либо ".
Это могло использоваться для идентификации блокировщиков, которые не имеют никаких студентов, присвоенных, или блокировщики, которые имеют слишком много студентов.
Возвраты 80 строк (список 70 студентов в этих 40 блокировщиках, плюс эти 10 блокировщиков без студента)
ПОЛНОЕ ВНЕШНЕЕ ОБЪЕДИНЕНИЕ было бы глупо и вероятно не много использования.
Что-то как" показывает мне всех студентов и все блокировщики, и подходит их, где Вы можете "
Возвраты 110 строк (все 100 студентов, включая тех без блокировщиков. Плюс эти 10 блокировщиков без студента)
ПЕРЕКРЕСТНОЕ ОБЪЕДИНЕНИЕ также довольно глупо в этом сценарии.
Это не использует связанный lockernumber
поле в таблице студентов, таким образом, Вы в основном заканчиваете с большим гигантским списком каждого возможного студента к блокировщику, соединяющегося, существует ли это на самом деле.
Возвраты 5 000 строк (100 студентов x 50 блокировщиков). Могло быть полезным (с фильтрацией) как начальная точка для подхождения новых студентов с пустыми блокировщиками.
Существует только 4 вида:
NULL
для каждого значения в таблице справа. Это означает, что каждая строка от таблицы слева появится, по крайней мере, однажды в выводе. А "перекрестное объединение" или "декартово соединение" является просто внутренним объединением, для которого никакие условия объединения не были определены, приведя ко всем парам производимых строк.
Благодаря RusselH для указания на ПОЛНЫЕ соединения, которые я опустил.
Выезд Соединение (SQL) на Википедию
оставленный / правильное (внешнее) соединение - Учитывая две таблицы, возвращает все строки, которые существуют или в левой или правой таблице Вашего соединения, плюс строки с другой стороны будет возвращен, когда пункт соединения является соответствием или пустым указателем, будет возвращен для тех столбцов
Полный Внешний - Учитывая две таблицы, возвращает все строки и возвратится, аннулирует, когда любой левый или правый столбец не там
Перекрестные объединения - Декартово соединение и может быть опасным если не используемый тщательно
Существует три основных типа соединения:
INNER
соединение сравнивает две таблицы и только возвращает результаты, где соответствие существует. Записи от 1-й таблицы дублированы, когда они соответствуют нескольким результатам в 2-м. Внутренние объединения имеют тенденцию делать наборы результатов меньшими, но потому что записи могут быть дублированы, это не гарантируется. CROSS
соединение сравнивает две таблицы, и возвратите каждую возможную комбинацию строк от обеих таблиц. Можно получить много результатов этого вида соединения, которое даже не могло бы быть значимо, таким образом используйте с осторожностью. OUTER
соединение сравнивает две таблицы и данные возвратов, когда соответствием являются доступные или Нулевые значения иначе. Как с Внутренним объединением, это будет дублирующиеся строки в одной таблице, когда это будет соответствовать нескольким записям в другой таблице. Внешние объединения имеют тенденцию делать наборы результатов больше, потому что они не будут собой удалять записи из набора. Необходимо также квалифицировать Внешнее объединение для определения, когда и где добавить Нулевые значения: LEFT
средства ведут весь учет от 1-й таблицы, неважно, что и вставляют Нулевые значения, когда 2-я таблица не соответствует. RIGHT
означает противоположное: ведите весь учет от 2-й таблицы, неважно, что и вставляют Нулевые значения whent он, 1-я таблица не соответствует. FULL
средства ведут весь учет от обеих таблиц и вставляют Нулевое значение в любую таблицу, если там не идет ни в какое сравнение. Часто Вы видите, будет OUTER
ключевое слово, опущенное от синтаксиса. Вместо этого этому просто "ОСТАВЯТ СОЕДИНЕНИЕ", "ПРАВО ПРИСОЕДИНЯЕТСЯ", или "ПОЛНОЕ СОЕДИНЕНИЕ". Это сделано, потому что Внутренние и Перекрестные объединения не имеют никакого значения относительно ЛЕВОГО, ПРАВИЛЬНОГО, или ПОЛНЫЙ, и таким образом, они достаточны собой для однозначного указания на Внешнее объединение.
Вот пример того, когда Вы могли бы хотеть использовать каждый тип:
INNER
: Вы хотите возвратить все записи из таблицы "Invoice", наряду с их соответствующим "InvoiceLines". Это предполагает, что каждый действительный Счет будет иметь по крайней мере одну строку. OUTER
: Вы хотите возвратить все записи "InvoiceLines" для конкретного Счета, наряду с их соответствующими записями "InventoryItem". Это - бизнес, который также продает услугу, такую, что не весь InvoiceLines будет иметь IventoryItem. CROSS
: у Вас есть таблица цифр с 10 строками, каждый параметры удержания '0' до '9'. Вы хотите составить таблицу диапазона дат для присоединения против, так, чтобы Вы закончили с одной записью в течение каждого дня в диапазоне. Путем перекрестного присоединения к этой таблице с собой неоднократно можно создать столько последовательных целых чисел, сколько Вам нужно (учитывая Вас, запускаются в 10 к 1-му питанию, каждое соединение добавляет 1 к экспоненте). Тогда используйте DATEADD () функция для добавления тех значений к основной дате диапазона.