私は3つのテーブルを持っています:domains
、、。status
domain_status
mysql> desc domains;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| domain_id | int(11) | NO | PRI | NULL | auto_increment |
| domain_url | varchar(255) | YES | | NULL | |
| domain_active | int(1) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
mysql> desc status;
+---------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+----------------+
| status_id | int(11) | NO | PRI | NULL | auto_increment |
| response_time | varchar(11) | YES | | NULL | |
| time_pinged | int(11) | YES | | NULL | |
+---------------+-------------+------+-----+---------+----------------+
mysql> desc domain_status;
+------------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+---------+------+-----+---------+----------------+
| domain_status_id | int(11) | NO | PRI | NULL | auto_increment |
| domain_id | int(11) | YES | | NULL | |
| status_id | int(11) | YES | | NULL | |
+------------------+---------+------+-----+---------+----------------+
データ
mysql> SELECT * FROM domains;
+-----------+----------------+---------------+
| domain_id | domain_url | domain_active |
+-----------+----------------+---------------+
| 1 | yahoo.com | 1 |
| 2 | google.com | 1 |
+-----------+----------------+---------------+
2 rows in set
mysql> SELECT * FROM status;
+-----------+---------------+-------------+
| status_id | response_time | time_pinged |
+-----------+---------------+-------------+
| 1 | 143 | 1344373818 |
| 2 | 0 | 1344373945 |
| 3 | 40 | 1344374045 |
| 4 | 504 | 1344375047 |
+-----------+---------------+-------------+
4 rows in set
mysql> SELECT * FROM domain_status;
+------------------+-----------+-----------+
| domain_status_id | domain_id | status_id |
+------------------+-----------+-----------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 3 |
| 4 | 2 | 4 |
+------------------+-----------+-----------+
ドメインを一覧表示し、テーブルの一番上のtime_pinged
行のステータスからレコードを表示しようとしていstatus
ます。group byを使用してMAX関数を試しましたが、表示する列データが他にない場合にのみ機能します。これは、ここでは当てはまりません。
クエリは現在4行を示していますが、私は何時間もの間、最も高い行を表示しながら2行を表示するようにしています。time_pinged
クエリ:
SELECT
domains.domain_id,
domain_url,
response_time,
time_pinged,
domain_active
FROM
(domains)
LEFT JOIN domain_status ON domain_status.domain_id = domains.domain_id
LEFT JOIN status ON status.status_id = domain_status.status_id
WHERE
(
domains.domain_id LIKE '%%'
OR domain_url LIKE '%%'
OR response_time LIKE '%%'
OR time_pinged LIKE '%%'
OR domain_active LIKE '%%'
)
ORDER BY
domain_id ASC
LIMIT 25
クエリ結果:
+-----------+----------------+---------------+-------------+---------------+
| domain_id | domain_url | response_time | time_pinged | domain_active |
+-----------+----------------+---------------+-------------+---------------+
| 1 | dhhcontrol.com | 143 | 1344373818 | 1 |
| 1 | dhhcontrol.com | 0 | 1344373945 | 1 |
| 2 | google.com | 504 | 1344375047 | 1 |
| 2 | google.com | 40 | 1344374045 | 1 |
+-----------+----------------+---------------+-------------+---------------+
4 rows in set
少し長めの場合は申し訳ありませんが、結合内などで選択してみましたが、わかりません。ありがとう!