Дзе ня Exists на ID - Паказаць вынікі

Я працую на інтэрнэт-краму. Мой кліент папрасіў мяне спіс прадуктаў, якія Арент прысвоеных катэгорыі. Я думаў, што гэта было б лёгка, але гэта, здаецца, не так лёгка, як і чакалася.

Дзве табліц Шукаем у гэтым shop_products і shop_products_categories. Яны маюць наладзіць кампутар:

<�Моцны> Крама Прадукты

  • ідэнтыфікатар,
  • назва,
  • Апісанне
  • цана

<�Моцны> Крама Катэгорыі прадуктаў

  • shop_product_id
  • shop_category_id

Я паспрабаваў

SELECT shop_product_id 
from shop_products_categories 
WHERE NOT EXISTS (SELECT name from shop_products)

Але гэта толькі здаецца, каб вярнуць усё ідэнтыфікатары з табліцы катэгорый.

Любая дапамога або кропка ў правільным напрамку будзе ацэнена.

An SQL Fiddle of this is available here

Прадукт XEROX не мае катэгорыю. Тады як зашпілька-маланка сумка робіць.

1
@bluefeet Кожны прадукт сапраўды мае катэгорыю. Калі я імпартаваў ўсе прадукты, я дадаў іх category_id 1169. Я з тых часоў выдалены, што катэгорыя і Lemonstand паказвае яго назва, як пустая. Мне трэба, каб паспрабаваць знайсці ўсе прадукты, якія былі прысвоены нарыхтоўку, Але гэта выглядае як яго кожны прадукт на сайце:/кашмар ..
дададзена аўтар StuBlackett, крыніца
@bluefeet Кожны прадукт сапраўды мае катэгорыю. Калі я імпартаваў ўсе прадукты, я дадаў іх category_id 1169. Я з тых часоў выдалены, што катэгорыя і Lemonstand паказвае яго назва, як пустая. Мне трэба, каб паспрабаваць знайсці ўсе прадукты, якія былі прысвоены нарыхтоўку, Але гэта выглядае як яго кожны прадукт на сайце:/кашмар ..
дададзена аўтар StuBlackett, крыніца
Прывітанне @bluefeet абодва выніковыя аднолькавыя: Shop_Products: 27243 Shop_Products_Categories: 27243
дададзена аўтар StuBlackett, крыніца
Прывітанне @bluefeet абодва выніковыя аднолькавыя: Shop_Products: 27243 Shop_Products_Categories: 27243
дададзена аўтар StuBlackett, крыніца
Цікава, яна працуе ў SQL Fiddle. Але не працуе ў маёй прамой базе дадзеных SQL .. Я дадаў скрыпку на пытанне: sqlfiddle.com/#! 2/74924/1
дададзена аўтар StuBlackett, крыніца
Цікава, яна працуе ў SQL Fiddle. Але не працуе ў маёй прамой базе дадзеных SQL .. Я дадаў скрыпку на пытанне: sqlfiddle.com/#! 2/74924/1
дададзена аўтар StuBlackett, крыніца
Цікава, яна працуе ў SQL Fiddle. Але не працуе ў маёй прамой базе дадзеных SQL .. Я дадаў скрыпку на пытанне: sqlfiddle.com/#! 2/74924/1
дададзена аўтар StuBlackett, крыніца
Згодны, я проста склейваннем ў SQL скрыпку.
дададзена аўтар StuBlackett, крыніца
Згодны, я проста склейваннем ў SQL скрыпку.
дададзена аўтар StuBlackett, крыніца
Згодны, я проста склейваннем ў SQL скрыпку.
дададзена аўтар StuBlackett, крыніца
Вы можаце размясціць некаторыя ўзоры дадзеных для кожнай табліцы? Вы ўпэўненыя, што ў вас ёсць прадукты без катэгорый? Вы заявілі, што адказы вяртаюць нулявое значэнне, што было б у выпадку, калі ўсе прадукты мелі катэгорыю.
дададзена аўтар Taryn, крыніца
Гэта азначае, што кожны прадукт прысвойваецца катэгорыя, так што вы атрымаеце нулявыя радкі, якiя вяртаюцца з адказамі на прыведзеных ніжэй.
дададзена аўтар Taryn, крыніца
Гэта азначае, што кожны прадукт прысвойваецца катэгорыя, так што вы атрымаеце нулявыя радкі, якiя вяртаюцца з адказамі на прыведзеных ніжэй.
дададзена аўтар Taryn, крыніца
Пры запуску SELECT COUNT (*) з shop_products і абярыце кол (выразны shop_product_id) з shop_products_categories з'яўляюцца выніковыя розныя? ( дэма )
дададзена аўтар Taryn, крыніца
Пры запуску SELECT COUNT (*) з shop_products і абярыце кол (выразны shop_product_id) з shop_products_categories з'яўляюцца выніковыя розныя? ( дэма )
дададзена аўтар Taryn, крыніца
Пры запуску SELECT COUNT (*) з shop_products і абярыце кол (выразны shop_product_id) з shop_products_categories з'яўляюцца выніковыя розныя? ( дэма )
дададзена аўтар Taryn, крыніца
Вы можаце размясціць некаторыя ўзоры дадзеных для кожнай табліцы? Вы ўпэўненыя, што ў вас ёсць прадукты без катэгорый? Вы заявілі, што адказы вяртаюць нулявое значэнне, што было б у выпадку, калі ўсе прадукты мелі катэгорыю.
дададзена аўтар Taryn, крыніца
Што менавіта вы рабілі? Што значыць «Я з тых часоў здабываў, што катэгорыя» азначае?
дададзена аўтар ypercubeᵀᴹ, крыніца
Што менавіта вы рабілі? Што значыць «Я з тых часоў здабываў, што катэгорыя» азначае?
дададзена аўтар ypercubeᵀᴹ, крыніца

12 адказы

Вы павінны быць у стане да наступнага, які будзе вяртаць ўсе прадукты, якія не ў shop_products_categories табліца:

select p.id, p.name, p.description, p.price
from shop_products p
where not exists (select 1
                  from shop_products_categories c
                  where p.id = shop_product_id);

See SQL Fiddle with Demo


Здаецца, у вас усё яшчэ ёсць праблемы, і я падазраю, што яны звязаны з NULL <�код /> значэння ў shop_category_id калонкі. Паспрабуйце таксама:

select p.id, p.name, p.description, p.price
from shop_products p
where not exists (select 1
                  from shop_products_categories c
                  where p.id = shop_product_id
                    and c.shop_category_id IS NOT NULL
                 ); 
4
дададзена

Вы павінны быць у стане да наступнага, які будзе вяртаць ўсе прадукты, якія не ў shop_products_categories табліца:

select p.id, p.name, p.description, p.price
from shop_products p
where not exists (select 1
                  from shop_products_categories c
                  where p.id = shop_product_id);

See SQL Fiddle with Demo


Здаецца, у вас усё яшчэ ёсць праблемы, і я падазраю, што яны звязаны з NULL <�код /> значэння ў shop_category_id калонкі. Паспрабуйце таксама:

select p.id, p.name, p.description, p.price
from shop_products p
where not exists (select 1
                  from shop_products_categories c
                  where p.id = shop_product_id
                    and c.shop_category_id IS NOT NULL
                 ); 
4
дададзена

Вы павінны быць у стане да наступнага, які будзе вяртаць ўсе прадукты, якія не ў shop_products_categories табліца:

select p.id, p.name, p.description, p.price
from shop_products p
where not exists (select 1
                  from shop_products_categories c
                  where p.id = shop_product_id);

See SQL Fiddle with Demo


Здаецца, у вас усё яшчэ ёсць праблемы, і я падазраю, што яны звязаны з NULL <�код /> значэння ў shop_category_id калонкі. Паспрабуйце таксама:

select p.id, p.name, p.description, p.price
from shop_products p
where not exists (select 1
                  from shop_products_categories c
                  where p.id = shop_product_id
                    and c.shop_category_id IS NOT NULL
                 ); 
4
дададзена

Выкарыстанне дзе НЕ ІСНУЕ праз подзапросов, як правіла, не на выдатна падыходзіць для выканання, але працуе. Больш агульны падыход, каб зрабіць левая JOIN і шукаць NULL (гэта значыць, не існуе)

select
      sp.id,
      sp.name,
      sp.description,
      sp.price
   from
      Shop_Products sp
         LEFT JOIN Shop_Products_Categories spc
            on sp.id = spc.shop_product_id
   where
      spc.shop_product_id is null
2
дададзена
Прывітанне @DRapp пытанне прадукцыйнасці звычай быць праблемай, так як я проста запусціць яго ў якасці аднаго запыту для майго кліента. Запыт вы прапанавалі вяртае 0 вынікаў.
дададзена аўтар StuBlackett, крыніца
Я згодны з тым, што ваш кажучы @ypercube але мой адмін Увайсці паказвае іх прадукты не былі прызначаныя.
дададзена аўтар StuBlackett, крыніца
Запыт з'яўляецца правільным (і таму @ запыт bluefeet в). Калі ў вас ёсць 0 якiя вяртаюцца радкоў, гэта значыць 0 прадуктаў, якія не аднесены да катэгорыі.
дададзена аўтар ypercubeᵀᴹ, крыніца

Выкарыстанне дзе НЕ ІСНУЕ праз подзапросов, як правіла, не на выдатна падыходзіць для выканання, але працуе. Больш агульны падыход, каб зрабіць левая JOIN і шукаць NULL (гэта значыць, не існуе)

select
      sp.id,
      sp.name,
      sp.description,
      sp.price
   from
      Shop_Products sp
         LEFT JOIN Shop_Products_Categories spc
            on sp.id = spc.shop_product_id
   where
      spc.shop_product_id is null
2
дададзена
Прывітанне @DRapp пытанне прадукцыйнасці звычай быць праблемай, так як я проста запусціць яго ў якасці аднаго запыту для майго кліента. Запыт вы прапанавалі вяртае 0 вынікаў.
дададзена аўтар StuBlackett, крыніца
Я згодны з тым, што ваш кажучы @ypercube але мой адмін Увайсці паказвае іх прадукты не былі прызначаныя.
дададзена аўтар StuBlackett, крыніца
Запыт з'яўляецца правільным (і таму @ запыт bluefeet в). Калі ў вас ёсць 0 якiя вяртаюцца радкоў, гэта значыць 0 прадуктаў, якія не аднесены да катэгорыі.
дададзена аўтар ypercubeᵀᴹ, крыніца

Выкарыстанне дзе НЕ ІСНУЕ праз подзапросов, як правіла, не на выдатна падыходзіць для выканання, але працуе. Больш агульны падыход, каб зрабіць левая JOIN і шукаць NULL (гэта значыць, не існуе)

select
      sp.id,
      sp.name,
      sp.description,
      sp.price
   from
      Shop_Products sp
         LEFT JOIN Shop_Products_Categories spc
            on sp.id = spc.shop_product_id
   where
      spc.shop_product_id is null
2
дададзена
Прывітанне @DRapp пытанне прадукцыйнасці звычай быць праблемай, так як я проста запусціць яго ў якасці аднаго запыту для майго кліента. Запыт вы прапанавалі вяртае 0 вынікаў.
дададзена аўтар StuBlackett, крыніца
Я згодны з тым, што ваш кажучы @ypercube але мой адмін Увайсці паказвае іх прадукты не былі прызначаныя.
дададзена аўтар StuBlackett, крыніца
Запыт з'яўляецца правільным (і таму @ запыт bluefeet в). Калі ў вас ёсць 0 якiя вяртаюцца радкоў, гэта значыць 0 прадуктаў, якія не аднесены да катэгорыі.
дададзена аўтар ypercubeᵀᴹ, крыніца

Выкарыстоўвайце гэты запыт, ён можа дапамагчы вам

SELECT * FROM shop_products WHERE id NOT IN (SELECT shop_product_id FROM shop_products_categories);
1
дададзена
Unfortunatley няма. Усе адказы вяртаюцца 0 вынікаў.
дададзена аўтар StuBlackett, крыніца
@StuBlackett ў вас ёсць рашэнне для гэтага ??
дададзена аўтар KiNG H, крыніца

Выкарыстоўвайце гэты запыт, ён можа дапамагчы вам

SELECT * FROM shop_products WHERE id NOT IN (SELECT shop_product_id FROM shop_products_categories);
1
дададзена
Unfortunatley няма. Усе адказы вяртаюцца 0 вынікаў.
дададзена аўтар StuBlackett, крыніца
@StuBlackett ў вас ёсць рашэнне для гэтага ??
дададзена аўтар KiNG H, крыніца

Выкарыстоўвайце гэты запыт, ён можа дапамагчы вам

SELECT * FROM shop_products WHERE id NOT IN (SELECT shop_product_id FROM shop_products_categories);
1
дададзена
Unfortunatley няма. Усе адказы вяртаюцца 0 вынікаў.
дададзена аўтар StuBlackett, крыніца
@StuBlackett ў вас ёсць рашэнне для гэтага ??
дададзена аўтар KiNG H, крыніца

Вы можаце паспрабаваць гэта, я не ўпэўнены:

Select id from shopproducts where not exist (select s.id from shopproduct as s inner    
joinshop_products_categories)

Гэта азначае, што ідэнтыфікатары з productshop, якія не існуюць у аб'яднанні два табліцы

0
дададзена

Вы можаце паспрабаваць гэта, я не ўпэўнены:

Select id from shopproducts where not exist (select s.id from shopproduct as s inner    
joinshop_products_categories)

Гэта азначае, што ідэнтыфікатары з productshop, якія не існуюць у аб'яднанні два табліцы

0
дададзена

Вы можаце паспрабаваць гэта, я не ўпэўнены:

Select id from shopproducts where not exist (select s.id from shopproduct as s inner    
joinshop_products_categories)

Гэта азначае, што ідэнтыфікатары з productshop, якія не існуюць у аб'яднанні два табліцы

0
дададзена