[英]Joining the same table twice in MYSQL
我正在嘗試創建一個 MYSQL 查詢,該查詢從一系列表中提取數據。 我有一個主預訂表和一個發票表,我在其中記錄來自 Stripe 的發票 ID 等。
我為每個預訂存儲了兩張發票; 一是定金,二是最后余額。
然后在我的管理后端中,我向管理員顯示發票是否已支付等信息,因此需要從 SQL 中提取數據來顯示這一點。
我在這里遵循一些先前的指導兩次加入同一張桌子的最佳方式是什么? .
我的查詢正在返回數據,但是當發票表包含兩次(給我存款和余額發票)時,列名是相同的。
有人能指出我正確的方向嗎? 我想我需要以某種方式重命名第二張退回發票上的列??? 對不起,除了基本的 SQL 查詢之外的任何東西都是新手。
這是我的 SQL
SELECT * FROM bookings
INNER JOIN voyages ON bookings.booking_voyageID = voyages.voyage_id
LEFT JOIN emailautomations ON bookings.booking_reference = emailautomations.automation_bookingRef AND emailautomations.automation_sent != 1
LEFT JOIN invoices ON bookings.booking_stripeDepositInvoice = invoices.invoice_id
LEFT JOIN invoices inv2 ON bookings.booking_stripeBalanceInvoice = inv2.invoice_id
感謝@Algef Almocera 的回答,我已經修改了我的 SQL (並且通過使用 SELECT * 不再懶惰,能夠將列的負載減少到不多!)
SELECT
bookings.booking_status,
bookings.booking_reference,
bookings.booking_stripeCustomerReference,
bookings.booking_stripeDepositInvoice,
bookings.booking_stripeBalanceInvoice,
bookings.booking_totalPaid,
bookings.booking_voyageID,
bookings.booking_firstName,
bookings.booking_lastName,
bookings.booking_contractName,
bookings.booking_contractEmail,
voyages.voyage_id,
voyages.voyage_name,
voyages.voyage_startDate,
depositInvoice.invoice_id AS depositInvoice_id,
depositInvoice.invoice_status AS depositInvoice_status,
balanceInvoice.invoice_id AS balanceInvoice_id,
balanceInvoice.invoice_status AS balanceInvoice_status
FROM bookings
INNER JOIN voyages ON bookings.booking_voyageID = voyages.voyage_id
LEFT JOIN emailautomations ON bookings.booking_reference = emailautomations.automation_bookingRef AND emailautomations.automation_sent != 1
LEFT JOIN invoices depositInvoice ON bookings.booking_stripeDepositInvoice = depositInvoice.invoice_id
LEFT JOIN invoices balanceInvoice ON bookings.booking_stripeBalanceInvoice = balanceInvoice.invoice_id
有時,這是無法避免的,因為關鍵字實際上可能通常是相同的,但每個表的目的不同。 為了幫助解決這個問題,您可以使用aliases
。 例如:
SELECT
invoices.column_name AS invoices_column_name,
transactions.column_name AS transactions_column_name
FROM invoices ...
LEFT JOIN transactions ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.