Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RFpro.ru: Базы данных MySQL


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

solowey
Статус: Специалист
Рейтинг: 153
∙ повысить рейтинг »
SAW
Статус: 7-й класс
Рейтинг: 135
∙ повысить рейтинг »
Megaloman
Статус: Советник
Рейтинг: 19
∙ повысить рейтинг »

∙ Базы данных

Номер выпуска:542
Дата выхода:06.02.2020, 21:16
Администратор рассылки:Коцюрбенко Алексей Владимирович (Модератор)
Подписчиков / экспертов:21 / 16
Вопросов / ответов:3 / 7

Консультация # 53985: Здравствуйте, ув. эксперты! Помогите понять смысл и работу JOIN в запросе SELECT. Я прочел о нем в доке по MySQL, смотрел на результат запроса, но понятьне могу. В чем его смысл, когда применять? Буду признателен за Вашу помощь!...
Консультация # 66544: Добрый вечер, уважаемые эксперты. Проблема в следующем (MS SQL): Есть две не связанные таблицы. 1-я: ModelId, Model (varchar(7)), в которую внесены краткие названия моделей приборов "...8150, 8160, 8160-1 и т.д...". 2-я таблица имеет, среди прочих, два столбца "Customer_Order" и "Quantity". Причем в "Custo...
Консультация # 66007: Здраствуйте! есть такая проблема, веду одновременно 2 базы (рабочая и бухгалтерская), нужно что бы при создании нового контраагента в рабочей базе в бухгалтерской тоже он вносился, т.е. что бы список контрагентов совпадал, и чтобы он правился одновременно в обоих базах .

Консультация # 53985:

Здравствуйте, ув. эксперты!
Помогите понять смысл и работу JOIN в запросе SELECT.
Я прочел о нем в доке по MySQL, смотрел на результат запроса, но понятьне могу. В чем его смысл, когда применять?
Буду признателен за Вашу помощь!

Дата отправки: 01.09.2006, 13:56
Вопрос задал: Mik
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Карпов Алексей:

Здравствуйте, Mik!
Join сам по себе является оператором связывания двух таблиц по условию.
Существует 5 типов связывания
INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN и CROSS JOIN.
Слова INNER и OUTER можно опускать. таким образом INNER JOIN и JOIN это один и тот же оператор,только по разному записанный. А LEFT JOIN это сокращенная форма LEFT OUTER JOIN

Вариант №1 INNER JOIN.
INNER JOIN работает следующим образом.
Осуществляется выбор всех комбинаций записей из первой таблицы с записями из второй таблицы. После чего проверяется условие написанное в операторе ON, если условие выполняется, то тогда в результирующий набор добавляется запись состоящая из соединенных записей из первой и второй таблицы. Если же условие не выполняется, то тогда в результирующих набор данных ничего не добавляется.
Используется когда необходимо получить данные которые есть в обеих таблицах.
Вариант №2 LEFT OUTER JOIN.
Осуществляется выбор всех комбинаций записей из первой таблицы с записями из второй таблицы. После чего проверяется условие написанное в операторе ON, если условие выполняется, то тогда в результирующий набор добавляется запись состоящая из соединенных записей из первой и второй таблицы. Если же условие не выполняется, то тогда в результирующих набор данных добавляется запись состоящая из записи таблицы стоящеей левее оператор JOIN + вместо данных из второй таблицы строка содержащая в всех полях NULL.

Консультировал: Карпов Алексей
Дата отправки: 01.09.2006, 14:06
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Santana:

Здравствуйте, Mik!
Обединяет две и более таблицы по значению полей. самый простой вариант джойна
where tabl1.field1 = tabl2.field2
Выбирает из обоих таблиц записи при которых соблюдается указанное условие

Консультировал: Santana
Дата отправки: 01.09.2006, 14:10
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Игорь Елизаров:

Здравствуйте, Mik!
допустим, есть две таблицы
список городов

Москва
Питер
Смоленск

и список родственников с городами
Москва , тетя
Свердловск , дядя
Питер , сестра

тогда при связывании этих таблиц по inner join (связываем по городу
получим только записи, у которых города совпадают,
то есть
москва , тетя
Питер , сестра

При связывании по Left join получаем все записи первой таблицы, ну и по возможности, родственников..

Москва , тетя
Питер , сестра
Смоленск , NULL (то есть во второй таблице нету соответствующей записи)

Консультировал: Игорь Елизаров
Дата отправки: 01.09.2006, 16:22
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 66544:

Добрый вечер, уважаемые эксперты.
Проблема в следующем (MS SQL):
Есть две не связанные таблицы. 1-я: ModelId, Model (varchar(7)), в которую внесены краткие названия моделей приборов "...8150, 8160, 8160-1 и т.д...". 2-я таблица имеет, среди прочих, два столбца "Customer_Order" и "Quantity". Причем в "Customer_Order" указывается полное наименование прибора, в которое включено название модели - "ххх-хх-8160-хххххх". Количество "Х" - не определено."Quantity" - количество приборов в заказе. Подскажите, как сформировать запрос на получение суммы каждой модели таблицы Model, имеющих совпадения с частью строки таблицы "Customer_Order".
Оператор LIKE здесь не работает, так как принимает подзапрос как строку.

Дата отправки: 11.12.2006, 17:12
Вопрос задал: DmitryDE
Всего ответов: 3
Страница онлайн-консультации »


Консультирует PaVeL_Ekt:

Здравствуйте, DmitryDE!

попробуйте like (\'%8160%\')

Консультировал: PaVeL_Ekt
Дата отправки: 11.12.2006, 17:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Grigory:

Здравствуйте, DmitryDE!
В MS SQL Server\'е есть функция SUBSTRING. Вот синтакс:
Syntax
SUBSTRING ( expression , start , length )

Arguments
expression

Is a character string, binary string, text, image, a column, or an expression that includes a column. Do not use expressions that include aggregate functions.

start

Is an integer that specifies where the substring begins.

length

Is an integer that specifies the length of the substring (the number of characters or bytes to return).

Для определения начальной позиции используйте функйию PATINDEX:
PATINDEX
Returns the starting position of the first occurrence of a pattern in a specified expression, or zeros if the pattern is not found, on all valid text and character data types.

Syntax
PATINDEX ( \'%pattern%\' , expression )

Arguments
pattern

Is a literal string. Wildcard characters can be used; however, the % character must precede and follow pattern (except when searching for first or last characters). pattern is an expression of the short character data type category.

expression

Is an expression, usually a column that is searched for the specified pattern. expression is of the character string data type category.

Return Types
int

Remarks
PATINDEX is useful with text data types; it can be used in a WHERE clause in addition to IS NULL, IS NOT NULL, and LIKE (the only other comparisons that are valid on text in a WHERE clause).

If either pattern or expression is NULL, PATINDEX returns NULL when the database compatibility level is 70. If the database compatibility level is 65 or earlier, PATINDEX returns NULL only when both pattern and expression are NULL.

Examples
A. Use a pattern with PATINDEX
This example finds the position at which the pattern "wonderful" begins in a specific row of the notes column in the titles table.

USE pubs
GO
SELECT PATINDEX(\'%wonderful%\', notes)
FROM titles
WHERE title_id = \'TC3218\'

Консультировал: Grigory
Дата отправки: 11.12.2006, 18:17
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Синельников Сергей:

Здравствуйте, DmitryDE!

Что-то вот похожее на это:

SELECT Model, SUM(Quantity) FROM T1 LEFT OUTER JOIN T2 ON (PATINDEX(Model,Customer_Order)>0) GROUP BY Model

К сожалению в MS SQL не силен, поэтому в возможны неточности в синтаксисе запроса, но смысл такой.

Консультировал: Синельников Сергей
Дата отправки: 12.12.2006, 07:06
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 66007:

Здраствуйте!
есть такая проблема, веду одновременно 2 базы (рабочая и бухгалтерская), нужно что бы при создании нового контраагента в рабочей базе в бухгалтерской тоже он вносился, т.е. что бы список контрагентов совпадал, и чтобы он правился одновременно в обоих базах

Дата отправки: 07.12.2006, 21:30
Вопрос задал: Нестеров Д. В.
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Jadd:

Здравствуйте, Нестеров Д. В.!
Создаете триггер на Insert и Update для той таблицы, значения которой хотите отслеживать. А дальше из триггера передаете в другую базу значения через Insert-запрос. Обращение к другой базе в формате БАЗА.dbo.Таблица

Успехов.

Консультировал: Jadd
Дата отправки: 07.12.2006, 21:52
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное