Başka bir tablodaki başka bir hat ile çarpılan tüm satırları ekleyin

2 Cevap php

Ben yeterince iyi bu açıklar umuyoruz. Ben 3 tablolar var. wo_parts, workorders ve part2vendor. Ben bir ay içinde satılan tüm parçaların maliyet fiyatını almak için çalışıyorum. Bu komut dosyası var.

$scoreCostQuery = "SELECT SUM(part2vendor.cost*wo_parts.qty) as total_score 
                       FROM part2vendor 
                       INNER JOIN wo_parts 
                         ON (wo_parts.pn=part2vendor.pn)  
                       WHERE workorder=$workorder";

Ne yapmaya çalışıyorum (PartNumber altında [pn]) her bir parçası wo_parts içinde olmasıdır. O öğenin maliyeti (parça numarası [pn] altında) part2vendor bulunmaktadır. Ben wo_parts satılan miktarı ile çarpılır part2vendor her parça fiyat gerekir. Yolu 3 kadar kravat workorders.ident = wo_parts.workorder ve part2vendor.pn = wo_parts.pn olduğunu. Birisi yardımcı olabilir umuyoruz. Yukarıdaki senaryo bana hesap makinesi tarafından eklenen olduğu gibi aynı toplam vermez.

2 Cevap

Böyle bir şey için görebiliyordu önemli nedeni, bir tür sorun olurdu. Örneğin, bu şamandıraların yerine rakamlar kullanılarak iseniz, biraz daha farklı bir cevap alabilirsiniz olabilirdi. Bu btw, yol çok yaygın bir hatadır.

Eminim burada yönüyle Sayılar kullanarak yapmak için şema çift kontrol öneriyoruz. SAYISAL crazy-güçlü PostgreSQL üzerinde, çok iyi bir performans sergiliyor ve düzgün keyfi hassas operasyonları destekler. Eğer veri türünü değiştiremezsiniz ise, sorguda sayısal için alanları döküm.

(ÇİFT dahil) HALKA türleri hassas ikili sabit numaraları ve bunlar her zaman 10 sayı tabanına tam olarak uymamaktadır. Numerics baz 1000 (30 bit başına 9 basamak anlamında) olarak saklanır ve bu ikili için / dönüştürmek için çok verimli olduğunu vardır. Bir maksimum var olmasına rağmen hassas, ayrıca keyfidir. Ancak, mali şeyler için, maksimum değerler veya hassas sayısal veri türleri ile ilgili bir sorun değildir. Bunları bolca kullanmalısınız.

Bu, sadece bir yorum bir cevap değildir.

Neden SQL deyimi dışında toplamı / çarpma işlemi yapmayız? Ben imho, her zaman olduğu gibi mümkün olduğunca uzağa kod ve SQL ifadeleri tutmak için iyi bir şey, bu kodu ve script karmaşıklığı hatları artacak çünkü aptalca görünüyor, biliyorum ama.