Вверх ↑
Этот топик читают: Гость
Ответов: 704
Рейтинг: 44
#1: 2013-12-03 17:10:19 ЛС | профиль | цитата
Добрый вечер всем, сижу уже часа 3 и ломаю голову над свой схемой, все началось с топика sqlite - с чем его едят где мне нужно
я писал(а):
подскажите а как соединить несколько таблиц в одну? Чтобы строки не дублировались не у одной из таблиц.

Дело в том что если одна из таблиц в базе данных, имеет больше строк чем другая, то после соединение таблиц, произойдет дублирование строк. Других я вариантов не нашел весь инет облазил.
И решил я попробовать сделать такую схему, которая вычисляет кол-во строк в каждой табл, склеить одну строку с другой, чтобы не было пустых строк и не происходило дублирование. Естественно бд не прикрутил, тупо использовал ListBox-ы.
code_32510.txt

Решил обратиться к вам, может есть другой альтернативный способ, чем моя схема?, может где-то есть схема по нахождению максимально числа в списке? Всего будет 3 запроса для вывода 3-х таблиц. И мне будет не известно где находится макс число строк в таблице после запроса. Думаю ясно изложил.
карма: 0

0
файлы: 1code_32510.txt [3.3KB] [107]
Ответов: 8928
Рейтинг: 823
#2: 2013-12-03 17:53:36 ЛС | профиль | цитата
Kazbek17, не люблю разрывов линий (особенно когда в них нет надобности) и StringTableMT
code_32512.txt
карма: 19

0
файлы: 1code_32512.txt [2.1KB] [135]
Ответов: 16884
Рейтинг: 1239
#3: 2013-12-03 18:58:45 ЛС | профиль | цитата
Kazbek17 писал(а):
Дело в том что если одна из таблиц в базе данных, имеет больше строк чем другая, то после соединение таблиц, произойдет дублирование строк. Других я вариантов не нашел весь инет облазил.
не смеши мои тапочки.
А что ты хочешь получить в результате ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 704
Рейтинг: 44
#4: 2013-12-03 21:33:07 ЛС | профиль | цитата
Леонид писал(а):
Леонид
Спасибо за пример.
Tad писал(а):
не смеши мои тапочки.
А что ты хочешь получить в результате ?

Tad, я вам уже писал что я хочу насмешить .
Вы мне показали пример массивом я это знал что так можно, но при этом только заполняется одна колонка. Не делать же мне 54 Strlist для наполнение данных.
Есть таблица где 54 колонки, в каждой колонки, в каждой строке может хранится не одна запись а несколько, как я уже писал
Абрикосовая
Виноградная
Тенистая
Лесная
Пушкина и.т.д.


Далее, заполняем другой столбец строками, сохраняем данные.
После каждого сохранения получается в других столбцах > в строках пустота.
Так вот я и хочу чтобы при запросе вывести данные без значение null в строках. Так понятно Если делать по другому, т.е Например: Создать таблицу <Данные о выбранных районов> <Id_Клиента><Id_Районы> и сохранять туда все выбранные районы клиентом. Так же, создать таблицу <Данные о выбранных улиц> <Id_Клиента><Id_улицы> .
И так 54 создать таблицы. Но потом все это каким образом соединить чтобы не было дубликатов строк? уже всю голову сломал.
Может есть документация как сохранять массив данных в бд?.
Если использовать запросы на объединение таблиц, то получаются дубликаты строк если таблицы не равны между собой одинаковым кол-во строк.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#5: 2013-12-03 22:55:11 ЛС | профиль | цитата
Tad писал(а):
А что ты хочешь получить в результате ?
Нарисуй.
Если нарисуешь на бумажке, то и сам поймешь как это сделать, а мне нарисуй хотя бы в Paint-е
И что за 54 колонки?
------------ Дoбавленo в 22.55:
Kazbek17 писал(а):
Может есть документация как сохранять массив данных в бд?.
Например: в колонку с типом данных TEXT из компонента Memo

Или я не понимаю в чем у тебя затык , или ты не понимаешь, что тебе надо.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 704
Рейтинг: 44
#6: 2013-12-03 23:50:46 ЛС | профиль | цитата
Вот Tad смотрите два скрина

Табл1

Табл2
Tad писал(а):
И что за 54 колонки?

Обычные колонки где хранятся список строк Улиц, районов площадь и.т.д
И таких таблиц будет 54 шт, где каждая будет хранить Id_Клиента. Разве не так я делаю
карма: 0

0
Ответов: 8928
Рейтинг: 823
#7: 2013-12-04 00:24:20 ЛС | профиль | цитата
Kazbek17, и как же им не быть, если в каждом уважающем себя городке (районе) есть улица Ленина Записи-то не тождественны, разные районы А если среди клиентов появятся пара-тройка Ивановых, тоже удалять
карма: 19

0
Ответов: 704
Рейтинг: 44
#8: 2013-12-04 00:37:38 ЛС | профиль | цитата
Леонид писал(а):
как же им не быть, если в каждом уважающем себя городке (районе) есть улица Ленина

Так Id_Клиента будут разные, запрос будет по ID клиента выводить а не по Ф.И.О Проблем с дубликатами не будет.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#9: 2013-12-04 10:19:30 ЛС | профиль | цитата
1. Продолжу вопрос Леонида.В клиентах есть три полных тёзки. Например три "Иванов Иван Иванович".
Для вибора клиента, уважающий себя (и пользователя ) программист, выведет ФИО в алфавитном порядке.
Как выбрать нужного Иванова ?

2. Про иерархию я тебе писал. Не читатель.
Таблица <Районы>
Тут согласен
[ID_Района]
[Имя района]
Таблица <Улицы>
[ID_Улицы]
[Имя улицы]
[ID_Района]
Связывать Район и Улицу по ID клиента - полный писец.

3. И самый главный вопрос: Что значит "Объединяем таблицы" ?
а) для чего их объединять ?
б) кому это надо ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:Kazbek17
Ответов: 704
Рейтинг: 44
#10: 2013-12-04 12:35:25 ЛС | профиль | цитата
Tad писал(а):
2. Про иерархию я тебе писал. Не читатель.
Таблица <Районы>
Тут согласен
[ID_Района]
[Имя района]
Таблица <Улицы>
[ID_Улицы]
[Имя улицы]
[ID_Района]
Связывать Район и Улицу по ID клиента - полный писец.

Я понял про что вы мне хотите сказать. Все понял. Вопрос закрыт спасибо.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#11: 2013-12-04 13:04:53 ЛС | профиль | цитата
Kazbek17 писал(а):
И таких таблиц будет 54 шт, где каждая будет хранить Id_Клиента. Разве не так я делаю
Каких таблиц ?
Конечно нет.

У тебя должны вестись справочники:
1. Справочник Клиентов - в котором должно быть о клиенте всё.
2. Справочник Районов (id, имя)
3. Справочник Улиц (id, имя, id Района)
4. Про остальные 51 ничего сказать не могу.

И вести рабочую таблицу (Infor) в которую пишется id записи, id клиента(обязательно) и id всех выбранных данных.
Т.е. строка в рабочей таблице связывает данные с клиентом.
(кстати, если Справочник Улиц (id, имя, idРайона) будет содержать id Района, то в рабочую таблицу писать idРайона - масло масленное.
И пусть будет в каждом Районе ул. Ленина, так как, ВЫБРАВ Район, ты сможешь выбрать только ул.Ленина из этого района.)

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 704
Рейтинг: 44
#12: 2013-12-04 13:11:55 ЛС | профиль | цитата
Учту спасибо.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#13: 2013-12-04 14:37:25 ЛС | профиль | цитата
Главные "радости" у тебя впереди !
Когда у власть имущих проснётся тяга к реформаторству - переименование, укрупнение, изменение районов.
Изменение списков улиц в районах.
Переименование улиц. (Особенно приятно когда длинную ул. Ленина до №50 переименуют в ул.Махно, а с №50 и до конца в ул. Степана Бандеры).
Или клиент ласты сложит и его наследство поделят на наследников.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8928
Рейтинг: 823
#14: 2013-12-04 17:16:50 ЛС | профиль | цитата
Tad, [flood]Да у наших "власть имущих" она (тяга к реформаторству) никогда и на засыпала, так и свербит в заднице: "Чтобы такого сделать плохого!?", потому как на нужное и хорошее нужна голова [/flood]
карма: 19

1
Голосовали:Tad
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)