【7/20問題】php 同一頁面兩個迴圈

想請問一下 我有兩個資料表
欄位不一樣 一樣的只有 id 跟 創建時間
我想在同一頁有兩個迴圈 同時撈各別資料
但我遇到一個問題...
要如何能夠利用創建時間
來同時排列兩個不同的資料表?(甚至不需要兩個迴圈?

假設這樣
資料表AA的資料
A 7/23
B 7/25
C 7/26
資料表BB的資料
1 7/24
2 7/27
3 7/28

他能夠這樣顯示:
A 7/23
1 7/24
B 7/25
C 7/26
2 7/27
3 7/28
標籤:

評論

  • select * from a_table, b_table order by TIME;
    小弟也是新手, 如果不行請小力..
  • 謝謝你
    但若兩個資料表要顯示在同一個迴圈呢?
  • edited 七月 2016
    子查詢+ union?

    SELECT * FROM
    (
    (
    SELECT
    `name` as c1,
    `dateA` as c2
    FROM
    tableA
    ) UNION (
    SELECT
    `number` as c1,
    `dateB` as c2
    FROM
    tableB
    )
    ) as res
    ORDER BY res.c2
  • 說:

    子查詢+ union?

    SELECT * FROM
    (
    (
    SELECT
    `name` as c1,
    `dateA` as c2
    FROM
    tableA
    ) UNION (
    SELECT
    `number` as c1,
    `dateB` as c2
    FROM
    tableB
    )
    ) as res
    ORDER BY res.c2
    程式碼排列得滿美的 哈ㄏ
  • SELECT * FROM
    (SELECT
    type,
    title,
    intro,
    budget,
    country,
    city,
    location,
    date_start,
    date_end,
    addtime as time FROM project)
    UNION
    (SELECT
    type,
    title,
    intro,
    budget,
    country,
    city,
    location,
    date_start,
    date_end,
    addtime as time FROM project_edu)
    ) as res

    ORDER BY res.time DESC
    我是這樣子
    但是沒有撈出資料
  • 而且我無法JOIN ON另一個資料表過來0..
  • (SELECT
    `type`,
    `title`,
    `intro`,
    `budget`,
    `country`,
    `city`,
    `location`,
    `date_start`,
    `date_end`,
    `addtime` FROM `project`)
    UNION
    (SELECT
    `type`,
    `title`,
    `intro`,
    `budget`,
    `country`,
    `city`,
    `location`,
    `date_start`,
    `date_end`,
    `addtime` FROM `project_edu`)

    JOIN `project` ON profile.id=project.id
    WHERE `username` = '".$_GET['id']."'
    ORDER BY `addtime` DESC
  • edited 七月 2016
    論壇使用 可以使用 [ code ] & [ /code ] 的標籤來顯示部分程式碼,比較可以編排縮排之類的狀況

    其次 SQL就是一步一步測試
    SELECT 
    type,
    title,
    intro,
    budget,
    country,
    city,
    location,
    date_start,
    date_end,
    addtime as time
    FROM
    project

    可以正常跑資料,再測試另外一個語法,再嘗試加上union
    一樣一樣來,不然你也不知道為什麼會跑不出來
    另外,最後那個由於是子查詢

    查詢結果必須要有 另外的結果名稱給他
    以及 子查詢後的再查詢 我印象是要用 HAVING 才有效果
  • 了解
    我最後是使用兩個迴圈先暫時用一下
  • OK,還是希望你最後能夠研究出來!畢竟也許你我之間有些什麼誤會,所以我的方式不適合你
    或者 只是缺少了一點什麼,所以你的語法還沒能夠成功執行!

    希望好運伴隨著你我!
  • 說:

    OK,還是希望你最後能夠研究出來!畢竟也許你我之間有些什麼誤會,所以我的方式不適合你
    或者 只是缺少了一點什麼,所以你的語法還沒能夠成功執行!

    希望好運伴隨著你我!

    真的很感謝你呢
  • 我目前還是繼續TRY....

  • (SELECT
    `pid`,
    `addtime`,
    `url`,
    `type`,
    `title`,
    `intro`,
    `budget`,
    `country`,
    `city`,
    `location`,
    `date_start`,
    `date_end`,
    `id`
    FROM `project`

    WHERE `type` = '\".$key.\"')
    UNION ALL
    (SELECT
    `eid`,
    `addtime`,
    `url`,
    `type`,
    `title`,
    `intro`,
    `budget`,
    `country`,
    `city`,
    `location`,
    `date_start`,
    `date_end`,
    `id`
    FROM `project_edu`

    WHERE `type` = '\".$key.\"')
    ORDER BY `addtime` DESC



    我這樣是可以顯示兩個資料表的資料
    不過我需要JOIN profile 資料表然後USING ID
    以及addtime要DESC排列
    不過都不行
    是哪裡有問題.......
  • edited 七月 2016
    你試試這樣呢

    SELECT 
    *
    FROM
    (
    (
    SELECT
    `pid`,
    '' as nid,
    `addtime`,
    `url`,
    `type`,
    `title`,
    `intro`,
    `budget`,
    `country`,
    `city`,
    `location`,
    `date_start`,
    `date_end`,
    `id`
    FROM
    `project`
    WHERE
    `type` = '\\".$key.\\"'
    ) UNION (
    SELECT
    '' as pid,
    `eid` as nid,
    `addtime`,
    `url`,
    `type`,
    `title`,
    `intro`,
    `budget`,
    `country`,
    `city`,
    `location`,
    `date_start`,
    `date_end`,
    `id`
    FROM
    `project_edu`
    WHERE `type` = '\\".$key.\\"'
    )
    ) as res
    ORDER BY
    res.addtime DESC
  • 以及 根據你的說法..你是需要 Join三張表...
    你確定你的資料庫效能...這樣執行會比較好?
  • 說:

    以及 根據你的說法..你是需要 Join三張表...
    你確定你的資料庫效能...這樣執行會比較好?


    有顯示資料
    不過addtime DESC還是沒有發揮作用
    我確定兩個資料表欄位跟屬性都一樣

    另外我是需要join profile資料表
    因為我每篇文章都會有會員的id
    我必須要撈profile它們的資料 才可顯示出該文章的發文者是誰等等
    還是說有更好的寫法?
  • 而且我發現我不知道怎麼判斷兩個欄位資料的差別
    我project跟project_edu是一樣的欄位沒錯
    差在一個是pid一個是eid
    pid是任務
    eid是教育
    我要判斷該筆是從哪個地方出來的 這該如何解?_?
  • 我在 as res 後面JOIN 成功了
    現在只差怎麼判斷是從哪個資料表出來的?
    這兩個資料表唯一不同的就是欄位 pid 和 eid
  • 然後若是project來的資料 我必須把網址路徑加上pid
    project_edu則是eid
  • 因為要透過url去看該文章內容
  • addtime 作用好像錯了
    他變成兩個資料表addtime是各自排列成DESC
  • 哈哈還是寫成同一個資料表算了
  • 這文拉好長...這篇文章沒問題嗎XD
    addtime 排序上還是有問題嗎??
    因為 我自己用Date 的欄位 拉兩張表測試 是OK的說

    其次你跑 MySQL 結果 應該會發現
    部份資料有 pid,部份資料 是空的
    部份則是有 eid,但是該資料的pid是空的
    沒辦法用這兩個欄位判斷嗎??

    因為
    SELECT
    `pid` as pid,
    '' as nid,


                SELECT
    '' as pid,
    `eid` as nid,

    這樣欄位輸出才會名稱會相同
    但是資料不同的,或者你可以把 資料改你希望的狀態
    例如 'null' as pid 或 '-1' as pid 之類的
  • 其次是 可以先把這邊資料取得之後,再將 id放入陣列
    用 SELECT * FROM profile WHERE id in ( xxx,xxx,xxxx )
    的方式一次性取得會員資料
  • 哈哈 感謝你的幫助
    我最後是寫成同一個資料表了XD
  • 恩 最後還是沒能給你什麼有效的幫助! 希望下次能有效的幫助你
  • 不 幫助很大~ 讓我認識了UNION的用法
Sign In or Register to comment.