2012-05-07 9 views
-2

私は次のようになり、この時点での仮定に基づくもので、クエリを記述しようとしていますMySQLの列の取得:名前が定義されていない、私のテーブルで

SELECT customers.*, 
     customers_cars.car 
     (SELECT main_vehicle 
     FROM customers 
     WHERE customer='Joe') 
FROM customers 
WHERE type='CoolCustomer'; 

を私のテーブルには、実際にCAR1のような値を持っています、car2、car3と私はそれらの値を実行時に "フォーマット"したいと思います。残念ながら、私はそれをどうやって行うのか分かりません。

+0

ので、何があなたがまあ、それだけでは動作しません – Satya

+0

エラーになっているされています。 – Stewie

+0

あなたはこのセグメントcustomers_cars.car(SELECT main_vehicle FROM customers from WHERE customer = 'Joe')を見て、誤りを修正します – Satya

答えて

0

あなたのテーブルのスキーマは表示されませんでした。それはあなたを助けることよりも困難になります。

  1. あなたのテーブルを誤って設計されています

    あなたがcar1列またはcar2列または...を取得しようとしている場合は、少なくとも二つの問題があります。

  2. クエリの一部として列(またはテーブル)の名前を構築することはできません。

お客様の車のそれぞれに関する情報を、顧客に関する情報とは別の表に記載する必要があります。したがって、顧客の名前が「Joe」であるという情報は1つのテーブルに属する。彼がランボルギーニを運転するという事実は、別のテーブルに記録する必要があります。顧客ごとに車のテーブルに複数のレコードが存在する可能性があります。

また、2つのテーブルを結合する必要があります。あなたの構文的に間違ったクエリはそれを試みません。

  • お客様:顧客、タイプ、...

  • Customers_Cars:main_vehicle、CAR1、のCaR2、CAR3


  • あなたが列を持つ2つのテーブルを持っています

Customers_Carsに何らかの種類の「顧客」列があるかもしれませんが、表示されていません。実際、各テーブルに「顧客ID」列があるはずです。さらに、Customers_Carsテーブルはただ次のようになります。

  • Customers_Cars:得意先は、CarNumは、CarInfo、この中

MainVehicleは、私がMainVehicleを仮定していることはブール値のフラグであり、1があること顧客ごとに真のタグが付けられます。

あなたのSELECT文では、次のようになります。

SELECT U.*, 
     C.CarInfo 
    FROM Customers  AS U 
    JOIN Customers_Cars AS C ON C.CustomerID = U.CustomerID 
WHERE C.MainVehicle = TRUE 
    AND U.Customer = 'Joe' 
    AND U.Type  = 'CoolCustomer'; 
0

私はあなたが別名を指定の列を与えることに言及していると思います。エイリアスの使用に関するこの参照を参照してください:Using column alias in WHERE clause of MySQL query produces an error

しかし、エイリアスの一番下の行は、ASキーワードを使用することです。サブクエリを使用するときは、ここでカッコ内のクエリを使用しているときにエイリアスが必要な場合があります。あなたの例では

、以下を試してみてください。

SELECT customers.*, car1 AS customers_cars.car 
    (SELECT car2 AS main_vehicle 
    FROM customers 
    WHERE customer='Joe') 
FROM customers 
WHERE type='CoolCustomer'; 
+1

[w3fools.com](http://w3fools.com/) –

+0

私は参照を削除します。 –

+0

@JackManeyはこれを参照していますか? –

関連する問題