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

0

У меня есть три таблицы с названием квитанция, квитанция. В таблице квитанций хранится запись информации о квитанции, в то время как квитанция хранит данные о сходах в этой квитанции.
Получение таблицы:

получениеno | плательщик | количество

66 | 333 | 1600
67 | 332 | 1500
68 | 215 | 300

Таблица получения:

получениеno | плата | количество

66 | 21 | 50
66 | 33 | 50
66 | 55 | 1500
67 | 55 | 1500
68 | 12 | 100
68 | 44 | 100
68 | 22 | 100

Столовые сборы:

Id | код | inassess

12 | Xbre | 0
21 | Падение | 0
22 | Поиск | 0
33 | Пермь | 0
44 | Afee | 0
55 | TFee | 1

Мне нужен запрос, который будет отображать записи на основе выбранного поля, если поле "INASSESS" равно 0 или 1 и SUM TOTAL AMOUNT ON RECEIPDET.

DESIRED OUTPUT  

получениеno | плательщик | SUM (recedet.amount) | inassess
66 | 333 | 1500 | 1
67 | 332 | 1500 | 1

ИЛИ ЖЕ

получениеno | плательщик | SUM (recedet.amount) | inassess

66 | 333 | 100 | 0
68 | 215 | 300 | 0

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

SELECT
    receipt.receiptno,
    receipt.amount
FROM
    receipt ORDER
BY LENGTH(receipt.receiptno), receipt.receiptno

SELECT
    Sum(receiptdet.amount),
    receiptdet.student,
    feetype.inassess,
    receiptdet.receiptno
FROM
    receiptdet
    Left Join fees ON receiptdet.fee = fees.id
    Left Join feetype ON fees.feetype = feetype.id
WHERE
    feetype.inassess =  '0' AND
    receiptdet.receiptno =  '66'
  • 0
    Вы пытались использовать соединения
  • 0
    Когда вы вызываете запрос, вы не создаете совершенно новую таблицу, которая хранится на диске. Вам нужно позвонить "CREATE TABLE", чтобы сделать это
Показать ещё 2 комментария
Теги:

1 ответ

3
Лучший ответ

Вы можете использовать JOINs чтобы собрать все таблицы вместе со своими столбцами связывания, затем использовать GROUP BY для группировки данных в соответствии с receiptno и inassess. Один запрос предоставит вам все требуемые данные:

SELECT r.receiptno, r.payor, SUM(rd.amount) AS fees, f.inassess
FROM receipt r
LEFT JOIN receiptdet rd ON rd.receiptno = r.receiptno
JOIN fees f ON f.id = rd.fee
GROUP BY f.inassess, r.receiptno

Для ваших данных образца это дает:

receiptno   payor   fees    inassess
66          333     100     0
68          215     300     0
66          333     1500    1
67          332     1500    1

SQLFiddle

  • 0
    этот сделал свое дело. все, что мне нужно, это добавить предложение WHERE, хочу ли я отображать inassess = 1 или = 0. спасибо, человек, очень ценю
  • 1
    Нет проблем. Рад, что смог помочь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню