我有一個帶有 2 個表的 SQL 資料庫,我需要在一個請求中將這些資料發送到服務器。
我正在嘗試從表中獲取startDate、endDate和title資料event
然后我也試圖從表中獲取source和eventId資料photo
到目前為止,我有這個完美的作品,但有一個問題。
SELECT event.startDate, event.endDate, event.id, event.title, photo.source, photo.eventId FROM event, photo
WHERE event.id = 'UNIQUE ID NUMBER' AND photo.eventId = 'UNIQUE ID NUMBER';
有時,photo.eventId等于NULL意味著什么都不會回傳。如果是這種情況,我需要的唯一資料是第一個表event中的資料,即三列startDate,endDate和title
然后回傳應該具有與此相同的輸出:
SELECT event.startDate, event.endDate, event.id, event.title FROM event WHERE event.id = 'UNIQUE ID NUMBER';
uj5u.com熱心網友回復:
您描述的是toLEFT連接的定義:eventphoto
SELECT e.startDate, e.endDate, e.id, e.title,
p.source, p.eventId
FROM event e LEFT JOIN photo p
ON p.eventId = e.id
WHERE e.id = 'UNIQUE ID NUMBER';
uj5u.com熱心網友回復:
我找到了一種欺騙方法,方法是將這兩個陳述句與UNION下面的代碼結合起來,然后NULL在我的第二個陳述句中添加兩個額外的欄位。這允許顯示兩個表的資料
SELECT event.startDate, event.endDate, event.id, event.title, photo.source, photo.eventId FROM event, photo
WHERE event.id = 'UNIQUE ID NUMBER' AND photo.eventId = 'UNIQUE ID NUMBER'
UNION SELECT event.startDate, event.endDate, event.id, event.title, null, null FROM event WHERE event.id = 'UNIQUE ID NUMBER';
uj5u.com熱心網友回復:
如果我們使用 a ,即使photoleft join中沒有匹配的記錄,也會回傳table事件的結果。注意我已經修改了以顯示兩種情況的結果:匹配和不匹配。如果一個事件的照片
中有多行,我們將在每張照片中獲得一排。在這種情況下,您應該考慮使用來自photo的欄位和來自event的欄位。WHERESTRING_AGG()GROUP BY
create TABLE event( startDate date, endDate date, id int, title varchar(25) ); create table photo( source varchar(25), eventID int ); insert into event (id, title) values (1, 'event one'),(2,'event two'); insert into photo values('source 1',1);
SELECT event.startDate, event.endDate, event.id, event.title, photo.source, photo.eventId FROM event LEFT JOIN photo ON event.id = photo.eventId WHERE event.id = 1 or event.id = 2;開始日期 | 結束日期 | 編號 | 標題 | 來源 | 事件ID :-------- | :-------- | -: | :-------- | :------- | ------: 空 | 空 | 1 | 活動一 | 來源 1 | 1 空 | 空 | 2 | 活動二 | 空 | 空值
SELECT event.startDate, event.endDate, event.id, event.title, photo.source, photo.eventId FROM event, photo WHERE (event.id = 1 AND photo.eventId = 1) or (event.id = 2 AND photo.eventId = 2);開始日期 | 結束日期 | 編號 | 標題 | 來源 | 事件ID :-------- | :-------- | -: | :-------- | :------- | ------: 空 | 空 | 1 | 活動一 | 來源 1 | 1
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/464782.html
