0 / 0 / 0
Регистрация: 02.08.2007
Сообщений: 3
1

Объясните что такое INNER JOIN?

02.08.2007, 14:23. Показов 2688. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясните что такое INNER JOIN?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2007, 14:23
Ответы с готовыми решениями:

Объясните доходчиво что такое dbo
Здравствуйте.Нашел что db0 это используемая по умолчанию схема SQL Server. Схемы являются частью...

Объясните что такое E
Объясните пожалуйста подробно что значит буква E в таких задачах:

Объясните что такое k ?
Объясните пожалуйста что такое k. Чему равно его начальное значение? uses crt; var x:array of...

Объясните что такое npos?
Объясните что такое s.npos, как работает? Погуглил не чего существенного не нашел.

13
AiK
02.08.2007, 18:53 2
Одним словом - пересечение двух таблиц.
В запросе возвращаются те и только те записи, которые имеют одинаковые значения поля, по которому строится пересечение.
В ANSI SQL INNER JOIN можно записать через знак равенства:

SQL
1
2
3
4
5
SELECT * FROM
A a,
B b
WHERE
a.ID = b.ID
sn
05.08.2007, 14:44 3
А можно ли определить пересечение двух временных дат. Есть StartDate, EndDate и нужно узнать пересекает ли этот отрезок, хоть какие-либо записи. (В таблице два поля есть fStartDate, fEndDate)
AiK
05.08.2007, 14:52 4
Можно:

SQL
1
2
3
4
5
6
7
8
SELECT 
       * 
FROM 
       YourTable
WHERE
 
    fStartDate >= @StartDate
AND fEndDate   <= @EndDate
Только join'ы тут не причём, это условия выборки.
sn
06.08.2007, 05:24 5
А как же еще насчет двух условий:
1) SELECT * FROM MyTable Where fStartDate >= StartDate AND fEndDate <= StartDate
2) SELECT * FROM MyTable Where fStartDate >= EndDate AND fEndDate <= EndDate
можно конечно применить OR, но нельзя ли как-нибудь сделать по-читабельней?
AiK
06.08.2007, 12:41 6
Что-то плохо у меня в последнее время с теоретико-множественными операциями

Если startdate <= enddate,
то по Вашим условиям данные будут возвращаться
только при совпадении всех четырёх дат, что замечательно укладывается и в предыдущий запрос.

Или я ещё не окончательно проснулся?
Zlotik
06.08.2007, 14:03 7
Если у тебя временные интервалы образуют пустое множество, то можешь ввести третью переменную и через нее перегнать данные

SQL
1
2
3
4
5
6
7
DECLARE @NewDate ..
 
IF (@Bdate>@Edate)
    BEGIN
      SELECT @NewDate=@BDate, @BDate=@Edate
      SELECT @EDate=@NewDate
    END
И после этого пишешь запрос :-))
sn
06.08.2007, 15:22 8
AiK-у
Вот эти два случая при обработке условия методом AiK работают не совсем как хочется:

1) fStartDate <= StartDate AND fEndDate <= StartDate

fStartDate fEndDate
-----------[-------------------------------]-----------------

StartDate EndDate
-----------------------------[-----------------------]-------

2) fStartDate <= EndDate AND fEndDate <= EndDate

fStartDate fEndDate
-----------[-------------------------------]-----------------

StartDate EndDate
---[-----------------------]---------------------------------

zlotik-у
Опишите, пожалуйста, поподробней.
0 / 0 / 1
Регистрация: 22.07.2007
Сообщений: 260
06.08.2007, 16:55 9
Если надо просто узнать совпадают ли хотя бы частично интервалы дат, то можно использовать условие NOT

select * from table1 where not (@StartDate > fEndDate or @EndDate < fStartDate)
0
Zlotik
06.08.2007, 18:13 10
Тогда напиши так

SQL
1
2
3
4
5
SELECT * 
 FROM YourTable
WHERE 
   fStartDate BETWEEN @StartDate AND @EndDate     
AND fEndDate BETWEEN @StartDate AND @EndDate
sn
07.08.2007, 05:52 11
AndreP,
Поздравляю!!!!!!!!!!!! Вы решили эту задачу правильно.
Zlotik, Дело в том, что если один отрезок [fStartDate, fEndDate] СОДЕРЖИТ В СЕБЕ отрезок [@StartDate, @EndDate], то Ваше условие не сработает.

Други, спасибо за помощь
Zlotik
07.08.2007, 19:03 12
Тогда можно так, но без OR :-))

SQL
1
2
3
4
SELECT * 
 FROM MyTable 
 WHERE fStartDate<@EndDate AND
       fEndDate>@StartDate
sn
08.08.2007, 05:58 13
Нет, Zlotik, не работает! Будь внимателен. Проверь сам для всех случаев пересечений.
Zlotik
08.08.2007, 09:24 14
Тогда так, но тебе же нужно было пересечение а не касание крайней точки.
SQL
1
SELECT * FROM MyTable WHERE fStartDate<=@EndDate AND fEndDate>=@StartDate
08.08.2007, 09:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2007, 09:24
Помогаю со студенческими работами здесь

inline-объясните что такое
1.Перегрузка ф-ии-следует ли все функции перегрузить? 2.inline-объясните что такое 3.каким...

Объясните, что такое Рекурсия?
Всем привет! Не могли бы пояснить -- что такое рекурсия? Или хотя бы где это доходчиво объяснено?

Объясните что такое сервлет?
Почитал немного о сервлетах, но так и не смог до конца понять что это такое и для чего нужно....

Объясните что это такое с винтом
У меня есть диск Seagate 320Gb IDE, он у меня стоял в USB коробке, потом начал издавать скрежет....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru