Как получить данные из нескольких таблиц на основе определенного значения столбца

NoClassDefFoundError В Java

Определение:

  1. Java Virtual Machine не может найти определенный класс во время выполнения, который был доступен при компиляции время.
  2. Если во время компиляции класс присутствовал, но не доступен в пути Java-класса во время выполнения.

Примеры:

  1. Класс не находится в Classpath, нет уверенного способа узнать его, но много раз вы можете просто взглянуть на печать System.getproperty («java.classpath») и он будет печатать путь к классу оттуда, вы можете хотя бы получить представление о вашем фактическом пути к классам времени выполнения.
  2. Простой пример NoClassDefFoundError - класс принадлежит отсутствующему файлу JAR, или JAR не был добавлен в classpath или иногда Имя jar было изменено кем-то, как в моем случае, один из моих коллег изменил tibco.jar на tibco_v3.jar, и программа не работает с java.lang.NoClassDefFoundError, и мне было интересно, что случилось.
  3. Просто попытаться запустить w с явно выраженным параметром -classpath с классом classpath, который, по вашему мнению, будет работать, и если он работает, то это верный короткий признак того, что кто-то переопределяет java classpath.
  4. Проблема с правами на JAR-файл также может вызвать NoClassDefFoundError в Java.
  5. Typo on XML Configuration также может вызвать NoClassDefFoundError в Java.
  6. , когда ваш скомпилированный класс, который определен в пакете, не присутствует в одном пакете во время загрузки, как в случае JApplet он будет вызывать NoClassDefFoundError в Java.

Возможные решения:

  1. Класс недоступен в Java-классе.
  2. Если вы работая в среде J2EE, чем видимость класса среди нескольких Classloader также может вызвать java.lang.NoClassDefFoundError, см. примеры и сценарий для подробного обсуждения.
  3. Проверить на java.lang.ExceptionInInitializerError в вашем файле журнала. NoClassDefFoundError из-за сбоя статической инициализации довольно распространен.
  4. Поскольку NoClassDefFoundError является подклассом java.lang.LinkageError, он также может появиться, если некоторая его зависимость, например, родная библиотека, недоступна.
  5. Любой сценарий запуска переопределяет переменную среды Classpath.
  6. Возможно, вы запускаете свою программу с помощью команды jar, а класс не был определен в атрибуте ClassPath файла манифеста.

Ресурсы:

3 способа решения NoClassDefFoundError

java.lang.NoClassDefFoundError Шаблоны проблем

0
задан John 16 January 2019 в 17:43
поделиться

3 ответа

Вы можете попробовать это

Select table1.ItemNo, table1.Code, table2.Value from table1
inner join table2 on table1.ItemNo = table2.ItemNo
where table1.ItemNo = '12345'

Вы можете узнать это Присоединение к SQL Server

0
ответ дан Suraj Kumar 16 January 2019 в 17:43
поделиться

Быть новичком в SQL означает, что вам нужно понимать объединения таблиц и подзапрос. Я сделаю это один шаг за один раз, надеюсь, это поможет.

SQL для создания и заполнения таблиц:

IF OBJECT_ID('tempdb..#tmpTable1') IS NOT NULL
  /*Then it exists*/
  DROP TABLE #tmpTable1

CREATE TABLE #tmpTable1 (
    code varchar(4) not null,
    ItemNo smallint not null )

insert into #tmpTable1 VALUES('A', 12345)
insert into #tmpTable1 VALUES('A', 12346)
insert into #tmpTable1 VALUES('A', 12347)
insert into #tmpTable1 VALUES('A', 12348)
insert into #tmpTable1 VALUES('B', 12349)
insert into #tmpTable1 VALUES('B', 12350)
insert into #tmpTable1 VALUES('B', 12351)
insert into #tmpTable1 VALUES('B', 12352)
insert into #tmpTable1 VALUES('C', 12353)
insert into #tmpTable1 VALUES('C', 12354)
insert into #tmpTable1 VALUES('C', 12355)
insert into #tmpTable1 VALUES('C', 12356)

IF OBJECT_ID('tempdb..#tmpTable2') IS NOT NULL
  /*Then it exists*/
  DROP TABLE #tmpTable2

CREATE TABLE #tmpTable2 (
    ItemNo smallint not null,
    Value varchar(4) not null )

insert into #tmpTable2 VALUES(12345, 'S')
insert into #tmpTable2 VALUES(12346, 'S')
insert into #tmpTable2 VALUES(12347, 'I')
insert into #tmpTable2 VALUES(12348, 'B')
insert into #tmpTable2 VALUES(12349, 'I')
insert into #tmpTable2 VALUES(12350, 'S')
insert into #tmpTable2 VALUES(12351, 'S')
insert into #tmpTable2 VALUES(12352, 'S')
insert into #tmpTable2 VALUES(12353, 'S')
insert into #tmpTable2 VALUES(12354, 'S')
insert into #tmpTable2 VALUES(12355, 'S')
insert into #tmpTable2 VALUES(12356, 'S')

SQL для вашего первого условия: «получить код из таблицы1, передав ItemNo в where предложение», выбрать t1.code из # tmpTable1 t1, где t1. ItemNo = 12350

Результат: код B

SQL, чтобы добавить ваше второе условие, «извлечь все ItemNo, которые связаны с этим кодом» Использовать исходный запрос в качестве подзапроса.

select t1.ItemNo from #tmpTable1 t1 
where t1.code = (
    select t1.code from #tmpTable1 t1 
    where t1.ItemNo = 12350 )

Результат: ItemNo 12349 12350 12351 12352

SQL для добавления вашего второго условия "и, если код имеет только значение = S" Присоединитесь к таблице 2, добавьте 'S' к где. «напечатать его номер элемента и код», добавьте код к выбранному

select t1.ItemNo, t1.code from #tmpTable1 t1 
inner join #tmpTable2 t2 on t2.ItemNo = t1.ItemNo
where t1.code = (
    select t1.code from #tmpTable1 t1 
    where t1.ItemNo = 12350 )
and t2.Value = 'S'

Результат: номер элемента 12350 B 12351 B 12352 B

0
ответ дан Brian Mayer 16 January 2019 в 17:43
поделиться

Я думаю, тебе нужно not exists:

with cte as (
     select t1.code, t1.itemno, t2.value
     from table1 t1 inner join
          table2 t2
          on t1.itemno = t2.itemno
)
select c.*
from cte c
where not exists (select 1 from cte c1 where c1.code = c.code and c1.value <> 'S')
0
ответ дан Yogesh Sharma 16 January 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: