phpMyAdmin
 sql >> Teknologi Basis Data >  >> Database Tools >> phpMyAdmin

SQL QUERY PADA TABEL GANDA

Kesalahan sintaks di sini adalah Anda memerlukan on -klausa untuk left join your . Tetapi masalah konseptual yang mendasarinya berbeda:Anda tidak dapat join dengan subkueri dependen .

Anda dapat memperbaiki kueri Anda seperti ini:

select items.* 
from items 
LEFT OUTER JOIN (
  select item_id, sum(purchase_details.quantity) as total
  from purchase_details 
  GROUP BY purchase_details.item_id
) ABC on ABC.item_id = items.id;

Ini memindahkan where batin Anda -kondisi (tergantung pada items.id , yang tidak diperbolehkan, karena di luar cakupan) ke on -ayat. Jadi item_id juga ditambahkan di dalam select (karena dibutuhkan di luar).

Cara lain untuk menulis ini adalah

select items.*, 
   (select sum(purchase_details.quantity) 
    from purchase_details 
    where purchase_details.item_id=items.id) as total
from items;

Di sini Anda memiliki subquery dependen :bagian dalam where -klausa tergantung pada items.id luar . Anda tidak memerlukan group by lagi, sebagai where -kondisi sudah menggunakan hanya baris untuk item itu. (Dan Anda juga hanya dapat mengembalikan paling banyak satu baris dalam konteks ini.)

Kedua kueri tersebut setara, dan dapat (jika pengoptimal menemukan bahwa rencana eksekusi) secara internal benar-benar dieksekusi dengan cara yang persis sama (meskipun Anda tidak perlu terlalu peduli, selama Anda memberikan indeks yang sesuai).

Jadi dalam kasus Anda, Anda dapat menggunakan keduanya (dan mungkin memeriksa mana yang lebih cepat); jika Anda ingin mendapatkan informasi tambahan untuk item itu, Anda harus memilih left join -versi sekalipun, mis. gunakan

...
LEFT OUTER JOIN (
  select item_id, 
    sum(purchase_details.quantity) as total,
    count(purchase_details.item_id) as cnt,
    max(purchase_details.quantity) as max_quantity_per_order,
    max(purchase_details.date) as latest_order,
    ...
  from purchase_details 
  GROUP BY purchase_details.item_id
) ABC on ABC.item_id = items.id;



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Kesalahan pengkodean dengan rangkaian karakter pemoles selama transfer pengaturan basis data / server

  2. Membuat tabel JSON dari kueri SQL

  3. Bagaimana cara mengeluarkan skema db dari MySQL/phpMyAdmin?

  4. Apa cara mudah untuk mengimpor database besar ke mysql menggunakan phpmyadmin?

  5. Apakah ada cara untuk menyembunyikan atau mengekspor seluruh database MySQL ke file CSV yang valid?