У меня есть две таблицы: harvested_record и harvested_record_simple_keys, которые связаны друг с другом.Querying через java
harvested_record
id|harvested_record_simple_keys_id|a lot of columns
harvested_record_simple_keys
id| a lot of columns
и я хочу сделать запрос, в котором мне нужно объединить две таблицы. В результате у меня будет таблица:
joined_table
id(harvested_record)| (harvested_record_simple_keys)|a lot of columns.
К сожалению, я получаю исключение: nested exception is java.sql.SQLSyntaxErrorException: Column name 'ID' matches more than one result column.
Я понял это потому, что после того, как присоединиться к я два столбца «идентификатор». Кто-нибудь может помочь мне с решением?
P.S. SQL заявление (работает в консоли IDEA):
SELECT * FROM (SELECT TMP_ORDERED.*, ROW_NUMBER() OVER() AS ROW_NUMBER FROM (SELECT * FROM harvested_record hr JOIN harvested_record_simple_keys hrsk ON hrsk.id = hr.harvested_record_simple_keys_id WHERE import_conf_id = ?) AS TMP_ORDERED) AS TMP_SUB WHERE TMP_SUB.ROW_NUMBER <= 2 ORDER BY import_conf_id ASC, record_id ASC;
Java-код (предположим, что ошибка здесь):
JdbcPagingItemReader<HarvestedRecord> reader = new JdbcPagingItemReader<HarvestedRecord>();
SqlPagingQueryProviderFactoryBean pqpf = new SqlPagingQueryProviderFactoryBean();
pqpf.setDataSource(dataSource);
pqpf.setSelectClause("SELECT *");
pqpf.setFromClause("FROM harvested_record hr JOIN harvested_record_simple_keys hrsk ON hrsk.id = hr.harvested_record_simple_keys_id");
String whereClause = "WHERE import_conf_id = :configId";
if (from!=null) {
fromStamp = new Timestamp(from.getTime());
whereClause += " AND updated >= :from";
}
if (to!=null) {
toStamp = new Timestamp(to.getTime());
whereClause += " AND updated <= :to";
}
if (configId != null) {
pqpf.setWhereClause(whereClause);
}
pqpf.setSortKeys(ImmutableMap.of("import_conf_id",
Order.ASCENDING, "record_id", Order.ASCENDING));
reader.setRowMapper(harvestedRecordRowMapper);
reader.setPageSize(PAGE_SIZE);
reader.setQueryProvider(pqpf.getObject());
reader.setDataSource(dataSource);
if (configId != null) {
Map<String, Object> parameterValues = new HashMap<String, Object>();
parameterValues.put("configId", configId);
parameterValues.put("from", fromStamp);
parameterValues.put("to", toStamp);
reader.setParameterValues(parameterValues);
}
reader.afterPropertiesSet();
Спасибо заранее.
Так же, как указывают ошибки, несколько столбцов имеют одинаковое имя. Вам нужно определить псевдонимы для этих столбцов. «Выберите col AS col1 FROM ...» –
В таблицах у меня много столбцов, и я бы не хотел писать имена для каждого столбца. –
, вы, возможно, сделали больше ввода в Stack Overflow, чем это потребовалось бы, чтобы набрать имена столбцов :-) – jalynn2