Ana içeriğe geç

MySQL Sorguları

MySQL sorguları, Compass modülünde Port'a eklenmiş bir MySQL veri kaynağı üzerinde MySQL SQL dialektiyle yazılan sorgulardır.

MySQL, standart SQL'e yakın bir dialekt kullanır ancak bazı fonksiyon ve sözdizim farklılıkları vardır. Özellikle backtick tanımlayıcı kullanımı, IFNULL(), GROUP_CONCAT() ve tarih fonksiyonları MySQL'e özgüdür.


Güçlü Yanları

Özellik Açıklama
Yaygın MES Kullanımı Birçok MES ve SCADA sistemi MySQL / MariaDB kullanır
Hızlı Okumalar MyISAM / InnoDB motorlarıyla hızlı SELECT sorguları
Basit Kurulum Hafif ve yaygın; tesisinizde çalışma ihtimali yüksek
Tarih Fonksiyonları YEAR(), MONTH(), DAY(), DATE_FORMAT() ile kolay tarih işleme
GROUP_CONCAT Çok satırlı veriyi tek satırda birleştirme

Pirivision'da Sık Kullanılan MySQL Kalıpları

Demo Fabrika — MySQL

Aşağıdaki örnekler Demo Fabrika MySQL veri setindeki demo_vardiya_uretim tablosunu kullanır (kolonlar: ts, hat_id, makine_id, vardiya, urun_ailesi, uretim_adet, hedef). Port'taki veri kaynağı adı: Demo Fabrika - MySQL (database app_db).

Aynı veriyi kendi ortamınızda oluşturmak için → Sentetik Veri Üretimi — MySQL

-- Son 50 üretim kaydı
SELECT ts, hat_id, makine_id, vardiya, urun_ailesi, uretim_adet
FROM   demo_vardiya_uretim
ORDER  BY ts DESC, hat_id
LIMIT  50;

-- Zaman aralığı (parametreli)
SELECT ts, hat_id, uretim_adet
FROM   demo_vardiya_uretim
WHERE  ts >= {{start_date}}
  AND  ts <= {{end_date}}
ORDER  BY ts;

-- Son 7 gün
SELECT ts, hat_id, uretim_adet
FROM   demo_vardiya_uretim
WHERE  ts >= DATE_SUB(NOW(), INTERVAL 7 DAY)
ORDER  BY ts DESC;

-- Günlük özet
SELECT DATE(ts)         AS gun,
       SUM(uretim_adet) AS toplam,
       AVG(uretim_adet) AS ortalama,
       MAX(uretim_adet) AS maksimum
FROM   demo_vardiya_uretim
WHERE  ts >= DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP  BY DATE(ts)
ORDER  BY gun;

-- IFNULL / IF ile koşullu değer
SELECT vardiya,
       IFNULL(SUM(uretim_adet), 0)                           AS toplam,
       IF(AVG(uretim_adet) >= 350, 'Hedef Üstü', 'Hedef Altı') AS durum
FROM   demo_vardiya_uretim
WHERE  ts >= DATE_SUB(NOW(), INTERVAL 7 DAY)
GROUP  BY vardiya;

Önemli MySQL Fonksiyonları

Kategori Fonksiyon Örnek
Zaman NOW() WHERE ts > NOW()
Zaman CURDATE() WHERE DATE(ts) = CURDATE()
Zaman DATE_SUB() DATE_SUB(NOW(), INTERVAL 7 DAY)
Zaman DATE_FORMAT() DATE_FORMAT(ts, '%Y-%m-%d')
Null IFNULL() IFNULL(value, 0)
Koşullu IF() IF(val > 100, 'Yüksek', 'Normal')
Metin GROUP_CONCAT() GROUP_CONCAT(col SEPARATOR ',')
Tanımlayıcı Backtick `tablo adi`

Gereksinimler

Gereksinim Açıklama
Port'ta MySQL veri kaynağı Bağlantısı test edilmiş olmalı
SELECT yetkisi Veritabanı kullanıcısının sorgulanacak tablolarda yetkisi olmalı

Rehberler

Rehber Açıklama
MySQL Sorgusu Oluşturma Compass'ta yeni MySQL sorgusu yazma
MySQL Sorgusu Düzenleme Mevcut sorguyu güncelleme
Sorgu Taşıma Farklı klasöre taşıma
Sorgu Çoğaltma Kopyalama
Sorgu Silme Kaldırma

MySQL Sorgusu Oluşturma