powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом.
16 сообщений из 16, страница 1 из 1
Помогите с запросом.
    #38360626
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Я начинающий Java программист, и мне приходится сталкиваться с необходимостью составления пока еще мне неподсильных запросов.

Есть запрос
Код: sql
1.
2.
3.
SELECT sf.id, sf.type, sf.version, sf.errTries, obj.id AS obj_id, entityVersion  
FROM Customer obj LEFT JOIN sf_replication_info sf ON obj.id=sf.id AND sf.type=0 
WHERE (sf.id IS NULL) OR (entityVersion > sf.version)



Вместо From Customer и type=0 я буду в Java коде подставлять разные значения. И в некоторых таблицах мне надо будет брать значения entityVersion из других таблиц. Например, в случае FROM NewDrawDownCase и CreditApplicationCase, нужно взять entityVersion из AbstractCase, а в случае BankPayment из Payment.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360638
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы Вам очень сочувствуем...

А в чём проблема-то? будете подставлять? ну подставляйте... нужно брать? ну берите...
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360647
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за поддержку. Я что-то не так спросил?
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360650
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты вообще НИЧЕГО не спросил. Только поплакался.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360655
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, как мне написать запрос так, чтобы в в случае FROM NewDrawDownCase и CreditApplicationCase, взять entityVersion из AbstractCase, а в случае FROM BankPayment из Payment.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360741
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuvinВместо From Customer и type=0 я буду в Java коде подставлять разные значения.


Вместо type=0 в Java коде подставлять разные значения type -- это нормально.

Вместо From Customer Java коде подставлять разные таблицы -- это НЕ нормально.
Это значит, что у вас что-то не так с архитектурой вашего приложения.

Имя таблицы должно быть в коде фиксировано, потому что таблица -- это сущность, с которой идёт работа.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360748
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuvinПодскажите пожалуйста, как мне написать запрос так, чтобы в в случае FROM NewDrawDownCase и CreditApplicationCase, взять entityVersion из AbstractCase, а в случае FROM BankPayment из Payment.

Пишите N разных запросов, каждый со своими параметрами. И вызывайте в зависимости от обстоятельств разные запросы.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360763
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас моя попытка выглядит так, но выдается ошибка

Column "SF.ID" not found; SQL statement:
SELECT sf.id, sf.type, sf.version, sf.errTries, obj.id AS obj_id, entityVersion FROM CreditApplicationCase LEFT JOIN AbstractCase ac ON obj.id=ac.id [42122-171]
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Получается, что он куда-то теряет один JOIN?
public String getStringQueryFromArray(ReplicationObjectType type) {

		String[] queryArray = {
				"SELECT sf.id, sf.type, sf.version, sf.errTries, obj.id AS obj_id, entityVersion FROM ", "type",
				" obj LEFT JOIN sf_replication_info sf ON obj.id=sf.id", 
				"",
				"AND sf.type=0 WHERE (sf.id IS NULL) OR (entityVersion > sf.version)" };

		if (type == ReplicationObjectType.NewDrawdownCase || type == ReplicationObjectType.CreditApplicationCase) {
			queryArray[2] = " LEFT JOIN AbstractCase ac ON obj.id=ac.id ";
		}
		
		if (type == ReplicationObjectType.BankPayment){
			queryArray[2] = " LEFT JOIN Payment ac ON obj.id=ac.id ";
		}

		queryArray[1] = type.name().toString();
		String query = queryArray[0] + queryArray[1] + queryArray[2] + queryArray[3];

		return query;
	}
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360778
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот рабочий код. Проблему я вроде сам решил. Извиняюсь, если я залез не в ту ветку.

public String getStringQueryFromArray(ReplicationObjectType type) {

String[] queryArray = {
"SELECT sf.id, sf.type, sf.version, sf.errTries, obj.id AS obj_id, entityVersion FROM ", "type",
" obj LEFT JOIN sf_replication_info sf ON obj.id=sf.id",
"",
" AND sf.type=0 WHERE (sf.id IS NULL) OR (entityVersion > sf.version)" };

if (type == ReplicationObjectType.NewDrawdownCase || type == ReplicationObjectType.CreditApplicationCase) {
queryArray[3] = " LEFT JOIN AbstractCase ac ON obj.id=ac.id ";
}

if (type == ReplicationObjectType.BankPayment){
queryArray[3] = " LEFT JOIN Payment ac ON obj.id=ac.id ";
}

queryArray[1] = type.name().toString();
String query = queryArray[0] + queryArray[1] + queryArray[2] + queryArray[3] + queryArray[4];

return query;
}
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360781
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Juvin,
пересчитайте элементы массива: почему [2] а не [3]?
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38360810
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за комментарии.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38362941
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте снова. А почему LIMIT в конце запроса ограничивает как-то странно. Я получаю на выходе не 5 результатов как указываю, а другое число? С чем это связано? Как мне добиться, чтобы возвращалось всегда точно указанное число записей? Спасибо.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public String getStringQueryFromArray(ReplicationObjectType type) {

String[] queryArray = {
"SELECT sf.id, sf.type, sf.version, sf.errTries, obj.id AS obj_id, entityVersion FROM ", "type",
" obj LEFT JOIN sf_replication_info sf ON obj.id=sf.id", 
"",
" AND sf.type=0 WHERE (sf.id IS NULL) OR (entityVersion > sf.version) LIMIT 5" };

if (type == ReplicationObjectType.NewDrawdownCase || type == ReplicationObjectType.CreditApplicationCase) {
queryArray[3] = " LEFT JOIN AbstractCase ac ON obj.id=ac.id ";
}

if (type == ReplicationObjectType.BankPayment){
queryArray[3] = " LEFT JOIN Payment ac ON obj.id=ac.id ";
}

queryArray[1] = type.name().toString();
String query = queryArray[0] + queryArray[1] + queryArray[2] + queryArray[3] + queryArray[4];

return query;
}[SRC JAVA]
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38362945
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из трёх доступных "натянуть" пять требуемых строк - ну никак не получится

Или выдается более пяти строк ?
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38362960
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выдает более пяти строк, при чем вперемешку из разных таблиц запроса.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38362977
Juvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема, решена.
...
Рейтинг: 0 / 0
Помогите с запросом.
    #38362979
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JuvinЗдравствуйте снова. А почему LIMIT в конце запроса ограничивает как-то странно. Я получаю на выходе не 5 результатов как указываю, а другое число? С чем это связано? Как мне добиться, чтобы возвращалось всегда точно указанное число записей? Спасибо.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public String getStringQueryFromArray(ReplicationObjectType type) {

String[] queryArray = {
"SELECT sf.id, sf.type, sf.version, sf.errTries, obj.id AS obj_id, entityVersion FROM ", "type",
" obj LEFT JOIN sf_replication_info sf ON obj.id=sf.id", 
"",
" AND sf.type=0 WHERE (sf.id IS NULL) OR (entityVersion > sf.version) LIMIT 5" };

if (type == ReplicationObjectType.NewDrawdownCase || type == ReplicationObjectType.CreditApplicationCase) {
queryArray[3] = " LEFT JOIN AbstractCase ac ON obj.id=ac.id ";
}

if (type == ReplicationObjectType.BankPayment){
queryArray[3] = " LEFT JOIN Payment ac ON obj.id=ac.id ";
}

queryArray[1] = type.name().toString();
String query = queryArray[0] + queryArray[1] + queryArray[2] + queryArray[3] + queryArray[4];

return query;
}[SRC JAVA]


вы результирующий текст запроса, который выполняется показывайте,
а не эту наркоманию, в виде сборки СКЛ
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с запросом.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]