Inner join pada mysql

saya punya 2 tabel user : id | nama 1 | john 2 | doe

dan hobi : id | nama | user_id 1 |gaming| 1 2 |koding| 1 3 |bola | 2 4 |koding| 2

SELECT user.name as nama,
hobi.name as hobi
from user
INNER JOIN hobi ON hobi.user_id=user.id

dengan query tsb mendapat hasil

nama | hobi john | gaming john | koding doe | bola doe | koding

tetapi saya ingin hasil

nama | jlh_hobi john | 2 doe | 2

saya baru belajar lebih dalam tentang query2 di sql. bagaimana ya query untuk mendapatkan hasil yang saya inginkan? terimakasih

avatar kanganjay08
@kanganjay08

41 Kontribusi 13 Poin

Diperbarui 5 tahun yang lalu

3 Jawaban:

Coba gunain query seperti ini:

<pre> SELECT a.nama,(SELECT count(b.id) FROM hobi b WHERE a.id=b.user_id) as jumlah_hoby FROM user a </pre>

tapi kalau query seperti ini kendalanya nanti dia akan tetap menghitung satu hoby walaupun nama hobinya nanti sama untuk org yg sama... hihihi

avatar AlifNur
@AlifNur

164 Kontribusi 72 Poin

Dipost 5 tahun yang lalu

Tanggapan

Makasih bg, saya coba dulu

Gini gan <pre> SELECT user.name as Nama, count(hobi.name) as Hobi FROM user INNER JOIN hobi ON hobi.user_id=user.id GROUP BY user_id </pre>

Jadinya kaya gini kan

<img src=' https://i.ibb.co/FXrLHzR/Screenshot-4.png '>

avatar alvinindra
@alvinindra

10 Kontribusi 6 Poin

Dipost 5 tahun yang lalu

Tanggapan

Thx bang, sy coba dl

<pre> SELECT a.name as Nama, count(b.name) as Hobi FROM user AS a INNER JOIN hobi AS b ON b.user_id=a.id GROUP BY b.user_id </pre>biar lebih simple berikan alias juga untuk tabel :D

avatar Nuera
@Nuera

22 Kontribusi 11 Poin

Dipost 5 tahun yang lalu

Tanggapan

itu kan nama sama hobi,kalau dbnya apotek gimana?

Login untuk ikut Jawaban