簡體   English   中英

如何使用 PHP 和 MySQL 根據列值從表中獲取數據

[英]How to fetch data from table as per column value using PHP and MySQL

我需要使用 PHP 和 MySQL 根據列值過濾表中的值。 這是我的數據:

db_images:

image_id     member_id      subcat_id   from_day   to_day

  1           220            56           1         3

  2           220            56           1         3

  3           220            56           1         1

  4           120            22           1         5

  5           120            22           2         4

這是我的查詢:

$qry=mysqli_query($connect,"select * from db_iamges group by member_id,subcat_id order by image_id desc");

使用我的查詢,我得到如下記錄:

image_id     member_id      subcat_id   from_day   to_day

    3           220             56         1          1

我需要to_day應該總是更高的價值。 如果存在相同的member_id and subcat_id ,則 to_day 將始終為較高值,而 from_day 將始終為較小值。 預期的輸出應該如下所示。

image_id     member_id      subcat_id   from_day   to_day

   1            220             56          1        3

   4            120             22          1        5

看來你有語法問題,因為如果你復制粘貼,你把“db_iamges”。 我做了一個表:

mysql> select * from prueba1;
+----------+-----------+-----------+----------+--------+
| image_id | member_id | subcat_id | from_day | to_day |
+----------+-----------+-----------+----------+--------+
|        1 |       220 |        56 |        1 |      3 |
|        2 |       220 |        56 |        1 |      3 |
|        3 |       220 |        56 |        1 |      1 |
|        4 |       120 |        22 |        1 |      5 |
|        5 |       120 |        22 |        2 |      4 |
|        6 |       120 |        22 |        2 |      9 |
|        7 |       120 |        22 |        2 |      2 |
+----------+-----------+-----------+----------+--------+
7 rows in set (0.00 sec)

和:

mysql> select image_id, member_id, subcat_id, min(from_day), max(to_day) from prueba1 group by member_id, subcat_id order by image_id asc;
+----------+-----------+-----------+----------+-------------+
| image_id | member_id | subcat_id | from_day | max(to_day) |
+----------+-----------+-----------+----------+-------------+
|        1 |       220 |        56 |        1 |           3 |
|        4 |       120 |        22 |        1 |           9 |
+----------+-----------+-----------+----------+-------------+
2 rows in set (0.00 sec)

這是工作

編輯:更新,因為我不明白你的主要問題。

Select
  T.*
From db_images t
Inner join (
  Select member_id, subcat_id, max(to_day) to_day
  db_images group by member_id,subcat_id
) t2 on t.member_id = t2.member_id
And t.Subcat_id = t2.subcat_id
And t.to_day = t2.to_day;

使用 max(column name) 獲得更高的 value 。

select image_id, member_id,subcat_id,from_day, max(to_day) as to_day from from db_iamges group by member_id,subcat_id order by image_id desc

嘗試這個

select t1.* from db_images t1 inner join(select max(member_id) as 
mid,max(subcat_id) as cid,min(from_day) as fdy from db_images group 
by member_id) t2 on t1.member_id = t2.mid and t2.cid = t1.subcat_id
and t2.fdy = t1.from_day group by member_id order by image_id asc;

在這里檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM