2017-08-15 4 views
-1

次の問題があります。 私は各顧客の一番若い子供を選択し、子供の年齢を表示したいと思います。したがって、出力は次のようになります。MySQLユーザの一番幼い子供を選択

[email protected] 12 
[email protected] 15 
[email protected] 8 

IDが1つ以上の子供がいる場合は、最も若い子供のみを表示する必要があります。

Table "customers" 
ID 
Email 


Table "kids" 
ID 
AgeOfKid 

ご協力いただければ幸いです。あなたは子供たちのテーブルに外部キーはcustomerIdを追加する必要がありますテーブル間の接続がない場合は、

select c.Email,min(k.AgeOfKid) from customers c 
inner join kids k on k.ID=c.ID 
group by c.ID 
+1

2つのテーブルの関係は何ですか? – waka

+0

https://dev.mysql.com/doc/refman/5.7/en/example-maximum-column-group-row.html – CBroe

+0

この関係はID –

答えて

0

。 キッズテーブルに既にcustomerIdがある場合は、必要なときに手動でクエリを書き込むのではなく、必要なデータを返すプロシージャを作成できます。例えば手続きの:

CREATE PROCEDURE getYoungestKid 
(
findcustomerId INT 
) 
BEGIN 
    SELECT c.email, MIN(k.AgeOfKId) AS 'youngest' 
    FROM customers AS c JOIN kids AS k ON c.ID = k.customerId 
    WHERE c.customerId = findcustomerId 
    GROUP BY c.ID 
END 

プロシージャを使用するだけで実行します。@CustomerIDはあなたが最年少の子供を捜している顧客のIDになります

CALL getYoungestKid (@customerId) 

を。

パラメータとしてfindcustomerIdを削除し、最後にwhere句を削除するだけで、すべての顧客に対して同様の手順を実行できます。

+0

それはトリックでした。ありがとうございました! –

0

を探しているクエリの

おかげ