MySQL SELECT JOIN LIMIT, строка Комментарий на пост и строка LIMIT Пост на пользователя - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть 3 таблицы в базе данных, ig_user, ig_post и ig_komentar

ig_user
id_ig_user   username     nama
---------------------------------------
1            elizabeth    elizabeth store
2            celmirashop  celmira store


ig_post
----------------------------------
id_ig_post    url_post    username
1             a1b2c3      elizabeth
2             d1e2f3      elizabeth
3             g1h2i3      elizabeth

4             j1k2l3      celmirashop
5             m1n2o3      celmirashop
6             p1q2r3      celmirashop


ig_komentar
------------------------------------------
id_ig_komentar    url_post   nama_komentar
1                 a1b2c3     arif
2                 a1b2c3     budi
3                 a1b2c3     candra
4                 a1b2c3     doni

5                 d1e2f3     ema
6                 d1e2f3     fellaini
7                 d1e2f3     gusti
8                 d1e2f3     hussein
9                 ......     ........
10                ......     ........
11                ......     ........

Я хочу выбрать данные, у каждого пользователя есть 2 сообщения, и у каждого сообщения есть 3 комментария (из таблицы ig_komentar)

Я пробую этот запрос

SELECT p1.nama_komentar
     , p1.isi_komentar
     , p1.id_ig_komentar
     , ip.username
     , p1.url_post 
  FROM ig_komentar p1 
  JOIN ig_komentar p2 
    ON p1.url_post = p2.url_post 
   AND p2.id_ig_komentar >= p1.id_ig_komentar 
  JOIN ig_post ip 
    ON p1.url_post=ip.url_post 
 GROUP 
    BY p1.id_ig_komentar
     , p1.url_post 
HAVING COUNT(*) <= 3 
 ORDER 
    BY url_post
     , id_ig_komentar

и возвращаю 3 комментария / комментария в каждом сообщении. но мне тоже нужен пользователь.

как запросить, чтобы вернуть 3 комментария / комментария в каждом сообщении и 2 сообщения в каждом пользователе, как это?

username     url_post   nama_komentar
elizabeth    a1b2c3     arif            
elizabeth    a1b2c3     budi            
elizabeth    a1b2c3     candra          

elizabeth    d1e2f3     ema             
elizabeth    d1e2f3     fellaini        
elizabeth    d1e2f3     gusti           

celmirashop  j1k2l3     taufiq 
celmirashop  j1k2l3     uzumaki
celmirahsop  j1k2l3     vivian 

celmirashop  m1n2o3     wahyu           
celmirashop  m1n2o3     xarman          
celmirashop  m1n2o3     yoris

имя пользователя elizabeth имеет 2 url_post, в в каждом посте 3 nama_komentar username celmirashop havw 2 url_post, в каждом посте 3 nama_komentar

1 Ответ

0 голосов
/ 05 февраля 2020

Рассмотрим немного другой вывод, но от более простого SQL:

SELECT ( SELECT username FROM ig_post WHERE url_post = k.url_post ) AS username,
       url_post,
       SUBSTRING_INDEX(GROUP_CONCAT(nama_komentar), ',', 3) AS namas
    FROM ig_komentar AS k
    GROUP BY url_post;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...