ВЫБЕРИТЕ запрос для нескольких столбцов с несколькими таблицами

#java #sql #join

#java #sql #Присоединиться

Вопрос:

Я прилагаю одно изображение моей проблемы:

введите описание изображения здесь

  1. При тестировании JFrame JTextField я вставлю идентификатор клиента, затем после нажатия кнопки ok запрос выберет и соберет информацию, относящуюся к этому клиенту.Затем он будет отображаться в jTableModel.
  2. Я прикрепляю изображение своей базы данных.
  3. Ошибка: «Код SQL не может быть выполнен».

Комментарии:

1. Я не знаю join query. Извините

2. Но сами таблицы связаны? Или они совершенно не связаны?

3. связанные друг с другом с определенным столбцом..

4. Учебное пособие по объединениям SQL может help:sqlzoo.net/wiki/The_JOIN_operation

5. @Devendra хорошо, это частый случай. Для этого я написал простой пример.

Ответ №1:

Вы можете сделать так (без объединения):

 SELECT   papers.paper_list,papers_rate.monday,papers_rate.tuesday,
papers_rate.wednesday,papers_rate.thrsday,papers_rate.friday,
papers_rate.saturday,papers_rate.sunday,magzines.magzine_name,magzines_rate.rate 
FROM papers,papers_rate,magzines,magzines_rate 
WHERE example_table.customer_id = ? AND other conditions"
 


Этот синтаксис, по сути, является простым внутренним СОЕДИНЕНИЕМ. Некоторые базы данных обрабатывают его точно так же, как явное СОЕДИНЕНИЕ. Предложение WHERE сообщает базе данных, какие поля следует сопоставить, и возвращает результаты, как если бы перечисленные таблицы были объединены в одну таблицу на основе предоставленных условий.(http://www.techrepublic.com/article/sql-basics-query-multiple-tables /)

Комментарии:

1. @Devendra вы отредактировали свой вопрос, поэтому вы должны использовать объединения, если таблицы связаны.

Ответ №2:

Вам нужно правильно объединить таблицы.
Вот так:

 SELECT
   paper_list,monday,tuesday,wednesday,thrsday,friday,saturday,sunday,magzine_name,rate 
FROM papers

LEFT JOIN papers_rate
    ON papers_rate.paperId = papers.id

LEFT JOIN magzines
     ON magzines.paperId = papers.id

LEFT JOIN magzines_rate 
     ON magzines_rate.magazineId = magzines.id

WHERE customer_id = ?"
 

Если вы выполните внутреннее объединение, все ваши результаты исчезнут, если у вас, например, нет magazine_rate …

И проверьте правильность написания.
Вы пишете thrsday вместо thursday и magzine вместо magazine…

PS: И откуда берется customer_id ?

Ответ №3:

Используйте объединения для выбора нескольких столбцов из нескольких таблиц. Обратитесь к этому, чтобы получить представление о соединении и примерах соединения.

Примечание: для выполнения операции объединения между двумя таблицами должно быть общее поле

Ответ №4:

Если таблицы связаны, вы должны использовать JOIN : давайте посмотрим пример (я не знаю полей ваших таблиц, поэтому я придумаю собственный пример). Подумайте о person pet таблицах и; person таблицы могут содержать эти поля:

 Person (personID, first_name, last_name, age)
 

pet таблица может содержать эти другие поля:

 Pet (petID, name, age, personID)
 

personID Поле в pet таблице определяет владельца питомца. Это простое отношение 1: N. Чтобы выбрать некоторые значения из этих двух таблиц, вы должны сделать что-то вроде:

 SELECT Person.first_name, Person.last_name, Pet.name
FROM Person INNER JOIN Pet ON
Person.personID = Pet.personID
WHERE Person.age > 30
 

Это просто наглядный пример. И INNER JOIN это просто тип соединения (существует несколько методов соединения). Здесь вы можете найти некоторую документацию, касающуюся этих проблем.

Ответ №5:

Вам нужно либо использовать предложение Join (... FROM papers JOIN papers_rate ON papers.[id_column] = papers_rate.[foreign_key]) , либо использовать equi-join (replace JOIN...ON clause with a condition in the WHERE clause) (... FROM papers,papers_rate WHERE papers.[id] == papers_rate.[foreign_key])

Не могли бы вы опубликовать схему своих таблиц?