lostyazilim

Mysql çıldırtan select sorgusu ...

7 Mesajlar 982 Okunma
lstbozum
wmaraci reklam

afyok28 afyok28 WM Aracı Kullanıcı
  • Üyelik 17.08.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek öğrenci
  • Konum Diğer
  • Ad Soyad O** O**
  • Mesajlar 44
  • Beğeniler 11 / 5
  • Ticaret 0, (%0)
sorgu üzerine fazlaca uğraştım çıldırttı beni bıraktım.
Düşündüğüm mantık şu id!=3 or gonderen_id=3 group by id,gonderen_id

sorgu sonucunda çıkan
id g_id date
3 4 20:26
4 3 20:27

bu 2 row için max dateyi nasıl bulucam ?

kısaca tabloyu örnek veriyim.
iç içe select ile olmuyor. karşu kullanıcıya gelen mesajları buldum ama user 3 için attığı mesajlar olmuyor neyse fazla uzatmıyım dinlenik kafayla belki göremediğimi görürsünüz.

id g_id mesaj date
3 4 sa 20:00
4 3 as 20:15
3 5 naberr 20:20
3 4 naber 20:21
4 3 iyi sen ? 20:22
3 2 naber 20:23
2 3 iyim nasılsın 20:24
2 3 napıyorsun 20:25
3 4 sa 20:26
4 3 naber 20:27

Max yapabildiğim sorgu:

SELECT *,MAX(date) AS mdate3 FROM user_mesajlar WHERE id=3 OR gonderen_id=3 GROUP BY id,gonderen_id ORDER BY `mdate3` DESC;

id g_id mesaj date
2 3 iyim nasılsın 20:24
3 2 naber 20:23
3 4 sa 20:26
3 5 naberr 20:20
4 3 naber 20:27

örnek user 3'e göre sorgu çıktısı:

id g_id mesaj date
4 3 naber 20:27
2 3 napıyorsun 20:25
3 5 naberr 20:20

olmalı.
 

 

wmaraci
reklam

gknyldrmm gknyldrmm WM Aracı Kullanıcı
  • Üyelik 09.05.2020
  • Yaş/Cinsiyet 32 / E
  • Meslek Developer
  • Konum İstanbul Anadolu
  • Ad Soyad G** Y**
  • Mesajlar 105
  • Beğeniler 7 / 17
  • Ticaret 2, (%50)
column adi date ama saat var o yüzden mysql sıralamıyor olabilir.

suraya bir bak
https://stackoverflow.com/questions/15708027/mysql-select-hour-in-datetime-and-group
afyok28

kişi bu mesajı beğendi.

afyok28 afyok28 WM Aracı Kullanıcı
  • Üyelik 17.08.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek öğrenci
  • Konum Diğer
  • Ad Soyad O** O**
  • Mesajlar 44
  • Beğeniler 11 / 5
  • Ticaret 0, (%0)

gknyldrmm adlı üyeden alıntı

column adi date ama saat var o yüzden mysql sıralamıyor olabilir.

suraya bir bak
https://stackoverflow.com/questions/15708027/mysql-select-hour-in-datetime-and-group


Örneği inceledim orda bilinen bi değer için GROUP BY yapıyor benim örnek bilinmeyen değer için.
Amaç 3-4 ve 3-2 olan row ları silmek.
Başka sorgu yazdım 4-3 ile 2-3 ü buluyor fakat 3-5 i bulamıyor. :)
+----+-------------+-------------------------+-------------------------+
| id | gonderen_id | mesaj | date |
+----+-------------+-------------------------+-------------------------+
| 3 | 4 | sa | 2020-06-03 21:20:02.573 |
| 4 | 3 | as | 2020-06-03 21:20:07.481 |
| 3 | 4 | naber | 2020-06-03 21:20:17.927 |
| 4 | 3 | iyi sen ? | 2020-06-03 21:20:40.080 |
| 3 | 2 | naber ogün | 2020-06-03 21:21:10.948 |
| 2 | 3 | iyim temp2 sen | 2020-06-03 21:21:32.029 |
| 2 | 3 | nap?yorsun | 2020-06-03 21:21:36.409 |
| 3 | 4 | sa | 2020-06-04 17:29:32.230 |
| 3 | 5 | naberr | 2020-06-05 07:38:33.258 |
| 4 | 3 | naber | 2020-06-04 21:16:20.141 |
+----+-------------+------------- -+----------------------------------+
Yazdığım sorgu ve çıktısı :

SELECT id,gonderen_id,MAX(date) AS mdate FROM user_mesajlar WHERE id=3 OR gonderen_id=3 GROUP BY id,gonderen_id ORDER BY `mdate` DESC;
+----+-------------+-------------------------+
| id | gonderen_id | mdate |
+----+-------------+-------------------------+
| 3 | 5 | 2020-06-05 07:38:33.258 |
| 4 | 3 | 2020-06-04 21:16:20.141 |
| 3 | 4 | 2020-06-04 17:29:32.230 |
| 2 | 3 | 2020-06-03 21:21:36.409 |
| 3 | 2 | 2020-06-03 21:21:10.948 |
+----+-------------+-------------------------+

İstediğim çıktı:
+----+-------------+-------------------------+
| id | gonderen_id | mdate |
+----+-------------+-------------------------+
| 3 | 5 | 2020-06-05 07:38:33.258 |
| 4 | 3 | 2020-06-04 21:16:20.141 |
| 2 | 3 | 2020-06-03 21:21:36.409 |
+----+-------------+-------------------------+
 

 

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Üyelik 14.01.2018
  • Yaş/Cinsiyet 52 / E
  • Meslek Programcı
  • Konum İzmir
  • Ad Soyad S** S**
  • Mesajlar 319
  • Beğeniler 4 / 111
  • Ticaret 0, (%0)
order by mdate DESC limit 1
 

 

wmaraci
wmaraci

afyok28 afyok28 WM Aracı Kullanıcı
  • Üyelik 17.08.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek öğrenci
  • Konum Diğer
  • Ad Soyad O** O**
  • Mesajlar 44
  • Beğeniler 11 / 5
  • Ticaret 0, (%0)
Abi sorunu çözdüm 2 select sorgusu kullanarak. Uzun yol belki ama sorunu çözdü.

1. select ilk 2 kolon için user 3 için farklı id leri listeliyor bu idi lerin max row unu bulup kaç id varsa union ile birleştirip order by yapıyorum
 

 

yazilimsoru yazilimsoru Yazilimsoru.com Kullanıcı
  • Üyelik 05.03.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Web developer
  • Konum İstanbul Avrupa
  • Ad Soyad İ** K**
  • Mesajlar 437
  • Beğeniler 132 / 131
  • Ticaret 0, (%0)
Hocam bu mesajlasma uygulaması için yapılmış bir şey veritabani mı?
 

 

Web sitem: yazilimsoru.com

afyok28 afyok28 WM Aracı Kullanıcı
  • Üyelik 17.08.2018
  • Yaş/Cinsiyet 27 / E
  • Meslek öğrenci
  • Konum Diğer
  • Ad Soyad O** O**
  • Mesajlar 44
  • Beğeniler 11 / 5
  • Ticaret 0, (%0)
evet.
 

 

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al