Mysql加入问题

时间:2011-09-02 14:52:10

标签: php mysql join

什么是错误的?

我无法获得任何数据......

SELECT 
  my_site_orders.order_id,
  my_site_orders.order_orderer_id,
  my_site_orders.order_ip,
  my_site_orders.order_time,
  my_site_orders.order_campaign_id,
  my_site_orders.order_status,
  my_site_orders.order_shipment_status,
  my_site_orders.order_shipping_method,
  my_site_orders.order1_id,
  my_site_orders.order1_coupon_id,
  my_site_orders.order1_amount,
  my_site_orders.order1_price,
  my_site_orders.order_cargo_name,
  my_site_orders.order_cargo_surname,
  my_site_orders.order_cargo_vatnumber,
  my_site_orders.order_cargo_line1,
  my_site_orders.order_cargo_line2,
  my_site_orders.order_cargo_stateprovince,
  my_site_orders.order_cargo_district,
  my_site_orders.order_cargo_city,
  my_site_orders.order_cargo_contactphone,
  my_site_orders.order_invoice_name,
  my_site_orders.order_invoice_surname,
  my_site_orders.order_invoice_company,
  my_site_orders.order_invoice_line1,
  my_site_orders.order_invoice_line2,
  my_site_orders.order_invoice_vatnumber,
  my_site_orders.order_invoice_vat,
  my_site_orders.order_invoice_stateprovince,
  my_site_orders.order_invoice_district,
  my_site_orders.order_invoice_city,
  my_site_orders.order_invoice_contactphone,
  my_site_orders.order_type,
  my_site_orders.order_note,
  my_site_orders.order_hash,
  my_site_orders.order_bank_hash,
  my_site_orders.order_phone_number,
  my_site_orders.order_price,
  my_site_orders.order_cc_name,
  my_site_orders.order_instalment_amount,
  my_site_orders.order_instalment_price,
  my_site_users.user_name,
  my_site_users.user_email,
  my_site_orders.order1_type,
  my_site_users.user_realname,
  my_site_users.user_surname,
  my_site_products.product_brand_id,
  my_site_products.product_id,
  my_site_products.product_cat_id,
  my_site_products.product_title,
  my_site_products.product_snippet,
  my_site_products.product_description,
  my_site_products.product_code,
  my_site_products.product_normalprice,
  my_site_products.product_price,
  my_site_products.product_quantity,
  my_site_products.product_image1,
  my_site_products.product_image1_t1,
  my_site_products.product_image4,
  my_site_products.product_image4_t1,
  my_site_products.product_image4_t2,
  my_site_products.product_image_big4,
  my_site_products.product_image5,
  my_site_products.product_image5_t1,
  my_site_products.product_image5_t2,
  my_site_products.product_image_big5,
  my_site_products.product_select_choice_title,
  my_site_products.product_select_option_title,
  my_site_products.product_select1,
  my_site_products.product_select2,
  my_site_products.product_select3,
  my_site_products.product_select4,
  my_site_products.product_select5,
  my_site_products.product_select6,
  my_site_products.product_select7,
  my_site_products.product_select8,
  my_site_products.product_select9,
  my_site_products.product_select10,
  my_site_brands.brand_name,
  my_site_product_cats.product_cat_name
FROM
  my_site_orders
  INNER JOIN my_site_users ON (my_site_orders.order_orderer_id = my_site_users.user_id)
  INNER JOIN my_site_products ON (my_site_orders.order1_id = my_site_products.product_id)
  INNER JOIN my_site_brands ON (my_site_products.product_brand_id = my_site_brands.brand_id)
  INNER JOIN my_site_product_cats ON (my_site_products.product_cat_id = my_site_product_cats.product_cat_id)
WHERE
  my_site_orders.order1_type = my_site_products.product_select1 
OR 
  my_site_orders.order1_type = my_site_products.product_select2 
OR 
  my_site_orders.order1_type = my_site_products.product_select3 
OR 
  my_site_orders.order1_type = my_site_products.product_select4 
OR 
  my_site_orders.order1_type = my_site_products.product_select5 
OR 
  my_site_orders.order1_type = my_site_products.product_select6 
OR 
  my_site_orders.order1_type = my_site_products.product_select7 
OR 
  my_site_orders.order1_type = my_site_products.product_select8 
OR 
  my_site_orders.order1_type = my_site_products.product_select9 
OR 
  my_site_orders.order1_type = my_site_products.product_select10

但我得到的数据是:

SELECT 
  my_site_orders.order_id,
  my_site_orders.order_orderer_id,
  my_site_orders.order_ip,
  my_site_orders.order_time,
  my_site_orders.order_campaign_id,
  my_site_orders.order_status,
  my_site_orders.order_shipment_status,
  my_site_orders.order_shipping_method,
  my_site_orders.order1_id,
  my_site_orders.order1_coupon_id,
  my_site_orders.order1_amount,
  my_site_orders.order1_price,
  my_site_orders.order_cargo_name,
  my_site_orders.order_cargo_surname,
  my_site_orders.order_cargo_vatnumber,
  my_site_orders.order_cargo_line1,
  my_site_orders.order_cargo_line2,
  my_site_orders.order_cargo_stateprovince,
  my_site_orders.order_cargo_district,
  my_site_orders.order_cargo_city,
  my_site_orders.order_cargo_contactphone,
  my_site_orders.order_invoice_name,
  my_site_orders.order_invoice_surname,
  my_site_orders.order_invoice_company,
  my_site_orders.order_invoice_line1,
  my_site_orders.order_invoice_line2,
  my_site_orders.order_invoice_vatnumber,
  my_site_orders.order_invoice_vat,
  my_site_orders.order_invoice_stateprovince,
  my_site_orders.order_invoice_district,
  my_site_orders.order_invoice_city,
  my_site_orders.order_invoice_contactphone,
  my_site_orders.order_type,
  my_site_orders.order_note,
  my_site_orders.order_hash,
  my_site_orders.order_bank_hash,
  my_site_orders.order_phone_number,
  my_site_orders.order_price,
  my_site_orders.order_cc_name,
  my_site_orders.order_instalment_amount,
  my_site_orders.order_instalment_price,
  my_site_users.user_name,
  my_site_users.user_email,
  my_site_orders.order1_type,
  my_site_users.user_realname,
  my_site_users.user_surname,
  my_site_products.product_brand_id,
  my_site_products.product_id,
  my_site_products.product_cat_id,
  my_site_products.product_title,
  my_site_products.product_snippet,
  my_site_products.product_description,
  my_site_products.product_code,
  my_site_products.product_normalprice,
  my_site_products.product_price,
  my_site_products.product_quantity,
  my_site_products.product_image1,
  my_site_products.product_image1_t1,
  my_site_products.product_image4,
  my_site_products.product_image4_t1,
  my_site_products.product_image4_t2,
  my_site_products.product_image_big4,
  my_site_products.product_image5,
  my_site_products.product_image5_t1,
  my_site_products.product_image5_t2,
  my_site_products.product_image_big5,
  my_site_products.product_select_choice_title,
  my_site_products.product_select_option_title,
  my_site_products.product_select1,
  my_site_products.product_select2,
  my_site_products.product_select3,
  my_site_products.product_select4,
  my_site_products.product_select5,
  my_site_products.product_select6,
  my_site_products.product_select7,
  my_site_products.product_select8,
  my_site_products.product_select9,
  my_site_products.product_select10,
  my_site_brands.brand_name,
  my_site_product_cats.product_cat_name
FROM
  my_site_orders
  INNER JOIN my_site_users ON (my_site_orders.order_orderer_id = my_site_users.user_id)
  INNER JOIN my_site_products ON (my_site_orders.order1_id = my_site_products.product_id)
  INNER JOIN my_site_brands ON (my_site_products.product_brand_id = my_site_brands.brand_id)
  INNER JOIN my_site_product_cats ON (my_site_products.product_cat_id = my_site_product_cats.product_cat_id)

1 个答案:

答案 0 :(得分:2)

首先,您可以使用IN()而不是那么多OR。它会使您的查询更短,更容易阅读。接下来,显然您没有order1_type IN(product_select1,product_select2,product_select3,product_select4,product_select5,product_select6,product_select7,product_select8,product_select9,product_select10)的订单。一些示例数据(来自第一个查询)可以帮助我们正确地重写您的查询