2


0

mysqlは1つまたは別のテーブルから選択します

おかげで、あなたの助けのために、私は私の問題の簡略版を投稿しましたが、これである大きなものに左結合を適用する方法を本当に理解していませんでした:

SELECT d.type,
       d.item ,
       if(d.type='I', a.name, b.name) as name,
       if(d.type='I', c.price,0) as price,
       if(d.type='I',if(d.taxes='yes',
       (c.priceWithTax*d.weight), (c.price*d.weight)),0) as totalprice
  FROM d
inner join a on d.item=a.id
inner join c on d.item=c.item
     where c.sede =1

問題は、d.type = 'I’の場合、テーブルaのアイテムが必要ですが、d.type = 'S’の場合、テーブルBのアイテムが必要な場合、価格はテーブルcにあるということです。

どうもありがとうございました。

3 Answer


0


このようなものが必要な場合は、データベース構造が間違っていることを明確に示しています。 +テーブルは* 1 *でなければならず、クエリはわかりやすく簡単になります。


0


select
  a.col1,
  b.col1,
  coalesce(c.col1,0)
from a inner join b on a.col0=b.col1
  left outer join c on b.col2='apple' and c.col1=b.col0

学ぶべきこと:

'' '' '

_ rawFoodテーブル、cookedFoodテーブル、およびMenuテーブルがあり、メニューテーブルにはrawFoodとcookedFoodの両方が含まれているため、その方法で参加する必要があります。 _

単一の「食品」テーブルを用意し、生の食品と調理済み食品の違いを示す列を用意する必要があります。


0


左結合を使用できます

select
    a.col1,
    b.col1,
    ifnull(c.col1,0)
from a
    inner join b on a.col0=b.col1
    left join c on (c.col1 = b.col0 and b.col2="apple")
where
    b.col2 != "apple" or (b.col2 = "apple" and c.col1 is not null)