数日前、解決する必要のあるSQLクエリの解決策を求めました。データは次のようになります。
meta_id post_id meta_key meta_value
269 4 _apais USA
270 4 _aciudad New york
271 4 _aservicio Pleasure
...
272 43 _apais USA
273 43 _aciudad Chicago
274 43 _aservicio Fun
...
275 44 _apais USA
276 44 _aciudad Miami
277 44 _aservicio Night Life
278 45 _apais USA
279 45 _aciudad Miami
280 45 _aservicio Sports
私がする必要があるのは、国と都市およびサービスに一致するすべてのレジスタを表示することです。または、国ごとにすべての_aciudadレジスタ(および_aservicio As service)を注文します。たとえば、次のようになります。
meta_id post_id meta_key meta_value meta_key meta_value meta_key meta_value
270 7 _apais USA _aciudad New York _aservicio Pleasure
261 13 _apais USA _aciudad Chicago _aservicio Fun
276 4 _apais USA _aciudad Miami _aservicio Sports
@Ravi Gummadi次のような解決策を教えてくれました:
SELECT t1.meta_id,
t1.post_id,
t1.meta_key,
t1.meta_value,
t2.meta_key,
t2.meta_value
FROM th_postmeta t1, th_postmeta t2
WHERE t1.post_id = t2.post_id
AND t1.meta_key = '_apais'
AND t2.meta_key = '_aciudad'
ORDER BY t1.meta_key
そのクエリはこれを返します:
meta_id post_id meta_key meta_value meta_key meta_value
270 7 _apais USA _aciudad New York
261 13 _apais USA _aciudad Chicago
276 4 _apais USA _aciudad Miami
279 10 _apais USA _aciudad Miami
meta_value値で複製されていないレコードのみを表示するにはどうすればよいですか(_aciudadおよび_aservicioの場合のみ、_apaisを複製できます)。
どうもありがとう!