#java #sql #join
#java #sql #Присоединиться
Вопрос:
Я прилагаю одно изображение моей проблемы:
- При тестировании JFrame JTextField я вставлю идентификатор клиента, затем после нажатия кнопки ok запрос выберет и соберет информацию, относящуюся к этому клиенту.Затем он будет отображаться в jTableModel.
- Я прикрепляю изображение своей базы данных.
- Ошибка: «Код 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])
Не могли бы вы опубликовать схему своих таблиц?