iT邦幫忙

0

關聯,取資料問題

  • 分享至 

  • xImage

主資料表(pro)
關聯3個資料表(a,b,c)

3個資料表各有數筆資料(下面以兩筆做測試)
3個資料表資料彼此無規則

因目前常用的left join 結果不容易閱讀

或是搭配PHP希望呈現以下圖表格

https://ithelp.ithome.com.tw/upload/images/20230104/20127967dJvS90hhCT.jpg

測試資料


    CREATE TABLE a(
        noa nvarchar(20),
        pro nvarchar(20)
    );

    insert into a
    select 'a-1','D2023-01-001'
    insert into a
    select 'a-2','D2023-01-001'

    CREATE TABLE b(
        noa nvarchar(20),
        pro nvarchar(20)
    );
    insert into b
    select 'b-1','D2023-01-001'
    insert into b
    select 'b-2','D2023-01-001'

    CREATE TABLE c(
        noa nvarchar(20),
        pro nvarchar(20)
    );
    insert into c
    select 'c-1','D2023-01-001'
    insert into c
    select 'c-2','D2023-01-001'

    CREATE TABLE pro(
        noa nvarchar(20)
    );
    insert into pro
    select 'D2023-01-001'
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
實習工程師
iT邦新手 2 級 ‧ 2023-01-04 16:01:37
    
	--=============== Table A ===============
	CREATE TABLE #a (
        noa NVARCHAR(20),
        pro NVARCHAR(20)
    );

    INSERT INTO #a
    SELECT 'a-1','D2023-01-001'
    INSERT INTO #a
    SELECT 'a-2','D2023-01-001'
	--=============== Table A ===============


	--=============== Table B ===============
    CREATE TABLE #b(
        noa NVARCHAR(20),
        pro NVARCHAR(20)
    );

    INSERT INTO #b
    SELECT 'b-1','D2023-01-001'
    INSERT INTO #b
    SELECT 'b-2','D2023-01-001'

	--=============== Table B ===============



	--=============== Table C ===============
    CREATE TABLE #c(
        noa NVARCHAR(20),
        pro NVARCHAR(20)
    );
    INSERT INTO #c
    SELECT 'c-1','D2023-01-001'
    INSERT INTO #c
    SELECT 'c-2','D2023-01-001'
	--=============== Table C ===============


	--=============== Table pro ===============
    CREATE TABLE #pro(
        noa NVARCHAR(20)
    );
    INSERT INTO #pro
    SELECT 'D2023-01-001'
	--=============== Table pro ===============



	--=============== Table Join ===============
	SELECT 
		#pro.noa
		,#a.noa
		,#b.noa
		,#c.noa
	FROM #pro
		INNER JOIN #a
			ON #pro.noa = #a.pro
		INNER JOIN #b
			ON SUBSTRING(#a.noa,LEN(#a.noa),1) = SUBSTRING(#b.noa,LEN(#b.noa),1)
		INNER JOIN #c
			ON SUBSTRING(#a.noa,LEN(#a.noa),1) = SUBSTRING(#c.noa,LEN(#c.noa),1)
	--=============== Table Join ===============
	

	DROP TABLE #pro,#a,#b,#c

PS:#pro.noa 這個值,用PHP語法判斷,重複的話,顯示空白

看更多先前的回應...收起先前的回應...
s34631327 iT邦新手 5 級 ‧ 2023-01-04 16:59:51 檢舉

感謝,我試一下

s34631327 iT邦新手 5 級 ‧ 2023-01-04 17:08:34 檢舉

我可能沒說清楚,如果三資料表的noa可能彼此無規則,那有辦法處理嗎?

啊? 沒規則哦..

如果沒規則的話,比較建議用PHP去撰寫..
將資料包成 List,再針對 Table 的 Row Number 去呈現。
PS:第一列..針對 尾數為1的資料,第二列..針對尾數為2的資料..以此類推。

s34631327 iT邦新手 5 級 ‧ 2023-01-05 14:33:25 檢舉

好,我試試

0
herrowei135
iT邦新手 4 級 ‧ 2023-01-05 09:34:39

查三次 然後用php自己拚array也是可以的吧

s34631327 iT邦新手 5 級 ‧ 2023-01-05 14:33:11 檢舉

好,我往這方向做

sql用單號分別join3個表 你會得到三組result 然後自己組
select * from a join b1;
select * from a join b2;
select * from a join b3;

或者https://towardsdatascience.com/transpositions-in-sql-c1cf724dfa2a

我要發表回答

立即登入回答