Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
 Аватар для mazda9996
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 4

Как связать 2 таблицы sql?

06.03.2013, 00:49. Показов 2240. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Я еще новичок, прошу проверить скрипт,

главная таблица: а соединяю с таблицей: b, по общему признаку: art_nr, из второй таблицы мне нужны данная колонка Re_Text

SQL
1
2
3
4
5
6
7
SELECT log_store_id AS Store_name, suppl_no, art_no, Re_Text AS name_art, date_of_day AS "DateM", SUM(log_stock_qty_pc) AS "Stock PC", SUM(log_stock_qty_kg) AS "Stock KG", SUM(log_stock_qty_colli) AS "Stock MU", SUM(Log_Stock_val_invbp) AS "Value" 
FROM a x
LEFT JOIN b ww 
ON ww.art_nr= x.art_nr
WHERE log_store_id=1414
AND suppl_no IN (30531, 55648)
GROUP BY log_store_id, art_nr, suppl_no, date_of_day
где то может дописать нужно... данные не выгружаются((((
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.03.2013, 00:49
Ответы с готовыми решениями:

Как связать таблицы sql
подключила в delphi 2 таблицы SQL, таблицы товар и поставщик. Как сделать что бы при выборе строчки в таблице товар, во второй таблице...

Как связать таблицы
Всем снова доброго времени суток. У меня опять проблема. Мне нужно сделать так чтобы при добавлении в одну страницу запись появлялась и в...

Как связать таблицы БД в Delphi?
у меня есть две таблицы в БД на PostgreSQL Таблица 1: uchenik (Ученики) Поля: Название поля (Тип поля) ...

11
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 8
06.03.2013, 00:55
может быть где-то в одной из таблиц есть значение null и в запросе нужно это указать типа :
where x.art_nr is not null and ww.art_nr is not null
0
 Аватар для mazda9996
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 4
06.03.2013, 01:07  [ТС]
спасибо за оперативный ответ, завтра на работе попробую..а глупый вопрос...что за значение null?

Добавлено через 5 минут
kandy172, ты еще можешь подсказать?) спасибо большое заранее)
0
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 8
06.03.2013, 01:38
null - это где совсем нет никакого определенного значения
не ноль в числовых, не пусто в текстовых данных, ни даты никакой не установлено
Если стоит null в поле, то база не понимает, с чем его сравнивать, значения еще нету и пропускает это
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.03.2013, 03:12
Микро мастер класс (гуру не смотреть, не читать, не бить м.... об стол).

Нет никакой необходимости перегружать текст запроса алиасами (псевдонимами - заменой имен таблиц и их полей другими именами). Чем вам оригинальные имена таблиц и полей не угодили. Ничего хорошего из обильного применения алиасов не получается. Один разрдрай в тексте и непонятки.
Да. Нет никакого сомнения, что применение алиасов необходимо. Например, когда нужно объединить данные из одной таблицы ("объединить таблицу саму с собой"). Есть и другие случаи.
Но в приведенном запросе никакой необходимости в псевдонимах нет. Жизнь себе упрощайте, т.е. пытайтесь себя как разработчика БД уважать.

А можно как-то оправдать (объяснить) чем вызвано обрамление алиасов полей кавычками (почему, к примеру, не коммерческим Аt)? Это мода такая или требование синтаксиса СУБД?
Если в наименовании полей используются символы пробелов, то это моветон - у кенгуру (штатовских) пробелы в наименовании полей вне закона.
Кстати, почему-то мало кто удосуживается объявлять о применяемой СУБД. Гадай, братва. А чаще всего это важно.

Главное. Чем вызвано левое объединение таблиц?
"из второй таблицы мне нужны данная колонка Re_Text". И всего то...
А если так, то зачем функции sum? Автор что-то недоговаривает?
И, все равно, чего здесь делает left join, когда в описанной ситуации достаточно inner join?

Еще. Не забывайте, что в современных СУБД применение агрегатных функций требует перечисления в предложении group by всех полей, которые упомянуты в select. Увы. В принципе, это должно быть понятно по определению. Ведь по ним сервер СУБД пытается суммировать данные (в нашем случае, действительно, sum). А в select встречаются и еще какие-то поля. И что с ними делать? Какие данные из них брать для предоставления в выборке? Сервер в растеренности.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
06.03.2013, 06:22
Скандербег, алиасы имеет смысл использовать еще в случаях длинных имен таблиц/вьюх сугубо для уменьшения объема кода. Так же когда запрос пишешь руками, а не собираешь конструктором.
В данном случае с учетом того что у одной таблицы имя "a", а у второй "b" конечно нет смысла.
Так же при использовании алиаса стоит учитывать что код будет читать другой человек и что ему должно быть понятно по алиасу о какой таблице идет речь.
Я использую первые буквы если имя из нескольких слов. Или согласные ибо если из слова убираются гласные, то читабельность текста не сильно страдает. Так же как и при переставлении букв в середине слова.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.03.2013, 06:58
Согласен.
Но в целом, алиасы - это препятствия в разработке БД, за исключением указанных выше случаев.
Даже разработчики СУБД это поняли "в один прекрасный момент", когда ввели возможность указывать квалификаторы таблиц вместе с именами полей (и наступила ляпота).
Можно же представить ситуацию, когда у вас есть 50 наименований и еще 50 псевдонимов этих самых наименований.
Черт ногу сломит в этом многообразии имен (а что у вас никогда не было запросов с 50-ю наименованиями полей?; наверняка были; вопрос в сторону, конечно).

И длинные имена - это тоже от лукавого (кто на что горазд).
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
06.03.2013, 07:08
Цитата Сообщение от Скандербег Посмотреть сообщение
И длинные имена - это тоже от лукавого (кто на что горазд).
Когда сам проектируешь, то конечно стараешся учитывать, а когда наследство. Танцуй с чем досталось.
Чесно одновременно собирать данные из 50 таблиц не приходилось. Даже в бытность работы на сотовиков.
Просто скорее не стоит злоупотреблять и просчитывать момент когда код становится трудно перевариваемым.
Когда наступат момент, что через месяц тебе придется смотреть на собственный код и пытаться понять что тут написал "этот идиот". И за коким он это сделал именно так.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.03.2013, 07:20
Опять же, согласен. А куда от правды жизни денешься.
(насчет 50-ти - это я о наименованиях полей из разных таблиц, не о 50-ти таблицах, конечно)
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
06.03.2013, 07:28
А-а-а. Ну если о полях. Но у меня на поля нет привычки ставить алиасы. Да и как-то сторонник минимализма. Т.е. выбирать надо только те поля которые необходимы и не более.
0
 Аватар для mazda9996
0 / 0 / 0
Регистрация: 05.03.2013
Сообщений: 4
06.03.2013, 10:46  [ТС]
иии блиин все равно что-то не так, я уже group by добавила все поля и дописала null...но не выгружает


SQL
1
2
3
4
5
6
7
8
9
SELECT log_store_id AS Store_name, suppl_no,  art_no, Re_Text AS name_art,  date_of_day AS "DateM", SUM(log_stock_qty_pc) AS "Stock PC", SUM(log_stock_qty_kg) AS "Stock KG", SUM(log_stock_qty_colli) AS "Stock MU", SUM(Log_Stock_val_invbp) AS "Value" 
 FROM а x
INNER JOIN b ww
 
ON ww.art_nr= x.art_nr
WHERE log_store_id=1414
AND  x.art_nr IS NOT NULL AND ww.art_nr IS NOT NULL 
AND suppl_no IN (30531, 55648)
GROUP BY log_store_id, suppl_no, art_no, Re_Tex, date_of_day
Добавлено через 17 минут
все равно не выгружается ...( добавила group by, unner, null.....но нет..(((


SQL
1
2
3
4
5
6
7
8
9
SELECT log_store_id AS Store_name, suppl_no,  art_no, Re_Text AS name_art,  date_of_day AS "DateM", SUM(log_stock_qty_pc) AS "Stock PC", SUM(log_stock_qty_kg) AS "Stock KG", SUM(log_stock_qty_colli) AS "Stock MU", SUM(Log_Stock_val_invbp) AS "Value" 
 FROM а  x
INNER  JOIN  b ww
 
ON ww.art_nr= x.art_nr
WHERE log_store_id=1414
AND  x.art_nr IS NOT NULL AND ww.art_nr IS NOT NULL 
AND suppl_no IN (30531, 55648)
GROUP BY log_store_id, suppl_no, art_no, Re_Tex, date_of_day
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
06.03.2013, 10:48
Ваша беда (на этом форуме, разумеется) в том, что никто из сочувствующих не подозревает о структуре таблиц в базе данных, о которой вы ведете речь. Даже о том какая это СУБД.
В этом случае никто (честно никто) не сможет ничего вам объяснить.
Если, например, посмотреть форум на sql.ru, то там, помимо прочего, всегда просят дать скрипт создания таблиц (о том что сообщить какая СУБД используется даже вопроса нет - предполагается само собой). А иначе, как люди смогут в сложных случаях (ваш не исключение) определить чего у вас не получается.
Надо же запустить скрипт чтобы понять трабл.
Кстати, сходите на sql.ru.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2013, 10:48
Помогаю со студенческими работами здесь

Как связать 2 таблицы в делфи
Здравствуйте. Подскажите как связать таблицы в делфи. Имеем табл1 (владелец) с полями ФИО id владельца. табл2(авто) с полями id авто, Авто...

Как связать таблицы в ibexpert
Есть 3 таблицы, нужно связать их.Читал в интернете что это как то делается через первичный и вторичный ключ, попробовал но выдает какую-то ...

Как связать таблицы в дбгрид ?
К примеру, есть таблица Маин, в ней поля: Код_лпу, Фам, Им И есть справочник Спр_лпу, в нем поля: код_лпу , назв_лпу Так вот, как...

Как связать по полю 2 таблицы?
У меня создаются 2 таблицы. У них есть ключевое поле N_ngdu. Как можно связать две таблицы (ОДНА КО МНОГИМ)? B Foxpro делалось очень...

Как связать 2 таблицы Парадокс7 в DatabaseDekstop
Здравствуйте. Создаю 2 таблицы 1- поля: ID(тип +,*); F.N.O.(A,50); ROJD(A,4); SUM(N) 2- поля: ID(+); MESTO(N); POSADKA(A,20);...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru