Przy użyciu Mysql mogę uruchomić następujące zapytanie
SELECT `meta_value`
FROM wordpress.wp_postmeta
WHERE post_id
IN (SELECT post_id FROM wordpress.wp_postmeta WHERE meta_value = "Tuesday" AND meta_key = "_field_93")
INTO OUTFILE "/tmp/Tuesday.csv"
FIELDS TERMINATED BY "," ESCAPED BY ","
Obecnie otrzymuję następujące dane, w których dane w każdym wierszu są kaskadowane i pogrupowane według post_id
na przykład:
post_id = 1112345 (przykład nie w pliku CSV)
,21
,Tuesday
,John Smith
,abc 123
post_id = 1112346 (przykład nie w pliku CSV)
,qrz22
,Tuesday
,Bob Godfrey
,ABC 229986
To, czego potrzebuję, to mieć każdy post_id
być linią, w której wszystkie wiersze są rozdzielane CSV na tej linii. na przykład:
post_id = 1112345 (przykład nie w pliku CSV)
,21 ,Tuesday ,John Smith ,abc 123
post_id = 1112346 (przykład nie w pliku CSV)
,qrz22 ,Tuesday ,Bob Godfrey ,ABC 229986
Jestem pewien, że odpowiedź jest wpatrzona we mnie w twarz, ale nie jestem guru SQL i nie mam pojęcia, gdzie się mylę. Zajrzałem do group_concat
polecenie, ale za każdym razem, gdy próbuję umieścić to w moim zapytaniu, dostaję błąd.
Byłbym wdzięczny za pomoc, którą każdy mógłby mi w tej sprawie udzielić, i przepraszam, jeśli moja prośba nie ma sensu, znowu nie jestem guru SQL.
Odpowiedzi:
0 dla odpowiedzi № 1Co powiesz na wyliczenie wartości pól, zwanych inaczej pivotem.
SELECT max(if(meta_key,"...",meta_value,null) as field_one,
max(if(meta_key,"_field_93",meta_value,null) as field_two,
max(if(meta_key,"...",meta_value,null) as field_three,
max(if(meta_key,"...",meta_value,null) as field_four
FROM wordpress.wp_postmeta
WHERE post_id
IN (SELECT post_id
FROM wordpress.wp_postmeta
WHERE meta_value = "Tuesday"
AND meta_key = "_field_93")
GROUP BY post_id
INTO OUTFILE "/tmp/Tuesday.csv"
FIELDS TERMINATED BY "," ESCAPED BY ",";