それぞれの車のための最新のエントリを取得するSQLタイプ(INT)は私のデータベース(MySQLは)2つのテーブル</p> <p>表1を持っている、選択
表2は - 私はすべてのために私の最も最近の仕事を取得するSELECTコマンドを必要とし、各車
ジョブ= ID(整数)、日(日)
のジョブが含まれていますIDの
ありがとうございます。
それぞれの車のための最新のエントリを取得するSQLタイプ(INT)は私のデータベース(MySQLは)2つのテーブル</p> <p>表1を持っている、選択
表2は - 私はすべてのために私の最も最近の仕事を取得するSELECTコマンドを必要とし、各車
ジョブ= ID(整数)、日(日)
のジョブが含まれていますIDの
ありがとうございます。
、あなたがこれを行うカント試すことができます。各ジョブに関連するcar_idを格納するか、またはjobs_to_carsテーブルを持つ必要があります。
次にあなたが使用したい:これは私は、ジョブのIDは、その後j.idするj.car_idを変更車のIDと同じである場合
SELECT C.*, J.id, MAX(J.date)
FROM cars C
INNER JOIN jobs J on J.car_id = C.id
GROUP BY C.id
を、しかし、あなたがジョブズに主キーを欠いていることだろうあなたが作ることを提案する。あなたは仕事が
jobs.car_id
フィールドを、忘れてしまった
これはうまくいきません。 – zerkms
MySQLエラー1111:グループ機能の無効な使用 –
maxまたはjoinでの問題?私はなぜ結合がうまくいかないのか説明しました。そして、私は最大をテストする時間がありません。そこに2番目のクエリが必要な場合は、またはmaxを選択してから使用します。 –
あなたは、あなたが共有フィールドを持っていない
ORDER BY date DESC
SELECT *
FROM cars c
INNER JOIN (SELECT MAX(id) AS j_id
FROM jobs
GROUP BY car_id) x ON x.j_id = c.id
car.last_job_id
を作成し、jobs
テーブル上のトリガとそれを維持することになります。あなたの質問が明確ではないので、このクエリも答えになります
SELECT j.*
FROM jobs j
INNER JOIN (SELECT MAX(id) id
FROM jobs
GROUP BY car_id) x ON x.id = j.id
あなたは彼がjobs.car_idを忘れてしまったと思って良かったのです...リンクするフィールドがないと仮定しました...どちらも危険な仮定です。私はフィールドを追加するとエレガントだとは思わないと思います... – WernerCD
あなたが他のフィールドを持っていないため、この
SELECT c.*, MAX(j.date) date
FROM cars c
LEFT JOIN jobs j ON j.id = c.id
GROUP BY c.id
ORDER BY c.id
のようなものを使用することができます[jobs]。車に仕事がない場合、日付はNULLになります。
それはデータベース全体ですか?それとも、私たちのために単純化していますか?あなたが仕事を持っていれば、車も...どうにかして関連付ける必要があります... – WernerCD