0

わかりましたので、質問はタイトルが示すほど単純ではないと思いますが、ここに行きます...次のクエリがあります:

SELECT age.*, job.id FROM age, job WHERE ((age.aid = job.id) AND (age.aid='$id'))

これは基本的に age と job の 2 つのテーブルを結合し、一致する行を取得します

しかし今、テーブルageの下の行推測に格納されている最も一般的な年齢を見つける必要があります

DB レイアウト

表:年齢

行:援助 - 推測

表:仕事

行: id

検索で見つけたものから、 count() を使用する必要があります

例えば:

SELECT guess, COUNT(guess) AS countguess FROM age GROUP BY guess ORDER BY countguess DESC LIMIT 1

しかし、どうすれば2つのクエリを一緒にマージできますか?

4

4 に答える 4

1

あなたはこのようなことをすることができます

SELECT age.aid, job.id, age.guess, COUNT(age.guess) AS countguess 
FROM age, job 
WHERE ((age.aid = job.id) AND (age.aid='$id')) 
GROUP BY guess 
ORDER BY countguess DESC
于 2012-07-23T07:38:03.857 に答える
0
SELECT age.*, job.id FROM age, job,
    (SELECT AVG(guess) AS countguess FROM age GROUP BY guess ORDER BY countguess DESC LIMIT 1) AS countguess
FROM job AS j
INNER JOIN age AS a
ON j.id = a.aid
WHERE a.aid = '{$id}'

これがあなたが望むものかどうかわかりませんか?多分

SELECT age.*, job.id FROM age, job,
    (SELECT AVG(guess) AS countguess FROM age WHERE guess = a.guess GROUP BY '1') AS countguess
FROM job AS j
INNER JOIN age AS a
ON j.id = a.aid
WHERE a.aid = '{$id}'
于 2012-07-23T07:38:54.277 に答える
0

マージと言うときは、それらに参加することを意味していると思います。2 つのテーブル間に関係がある場合に結合できます。

于 2012-07-23T07:36:56.690 に答える
0

UNION ALLこれを達成するために使用できます

SELECT aid, id, guess, SUM(countguess ) AS countguess
FROM
(
 SELECT age.aid, job.id, guess, 0 AS countguess  
 FROM age
      INNER JOIN job
          ON age.aid = job.id AND 
             age.aid='$id'

 UNION ALL

 SELECT age.aid, 0 AS job.id, guess, COUNT(guess) AS countguess 
 FROM age 
 GROUP BY guess 
 ORDER BY countguess DESC 
 LIMIT 1
) a
GROUP BY aid

*注:UNION ALL両方のクエリで同じ数の列が必要です

于 2012-07-23T07:37:59.110 に答える