2011-10-20 20 views
0

アイブ氏は、以下のクエリを得た:ないユニークなテーブル/エイリアス株式:

$sql = "SELECT `scanners`.`KordNo`, `scanners`.`BundleNumber` 
    FROM `scanners`, `TWOrder`, `Stock` 
    INNER JOIN `TWORDER` ON `scanners`.`KordNo` = `TWOrder`.`KOrdNo` 
    AND `scanners`.`Date` = '" . $date . "' 
    INNER JOIN `Stock` ON `TWOrder`.`Product` =`Stock`.`ProductCode` 
    AND `Stock`.`ProductGroup` NOT BETWEEN 400 AND 650 
    AND `scanners`.`Scanner` IN (
    ORDER BY `scanners`.`KordNo` ASC"; 
    foreach($scanner as $x) 
    {$sql .= $x . ",";} 
    $sql .= "0);"; 
    // And query the database 
    $result = mysql_query($sql); 
    while($row = mysql_fetch_array($result)) 
    $return[] = $row; 
} 

を私はPHPで私の管理者がSQLをエコーすると、私はエラーではないユニークなテーブル/エイリアスの株式を取得します。

誰かに助言できますか?

+4

[ほかの40個の質問](http://stackoverflow.com/search?q=%22not+a+unique+table%2Falias%22)と重複して「not a unique table/alias」というエラーが表示される可能性があります。 – Charles

+0

テーブル名は本当に*ストック*ですか? –

+1

これはクエリの終了方法ですか?あなたはサブジュリーやリストを持っているはずです – mishu

答えて

2

明示的なJOINを使用しているため、他の2つのテーブルをFROM句から削除してください。あなたが持っている2行目に

... 
FROM `scanners` 
INNER JOIN `TWORDER` ON `scanners`.`KordNo` = `TWOrder`.`KOrdNo` 
... 
0

...

FROM `scanners`, `TWOrder`, `Stock` 

次に、あなたは、いくつかのINNERがTWOrderと証券へのJOINを持っています。

  1. これは混乱している構文(,JOIN)です。 JOINそれはあなたが本当に1つのクエリで複数回、それらのテーブルを含める必要がある場合は、別名を指定それらを与える必要があり

TWOrderと証券をクエリで二回言及されていることを意味

  • に固執するので、彼らはすることができお互いに区別されている。

    しかし、私はそれはおそらく間違いだと思うし、その2行目は、ちょうどその後

    FROM `scanners` 
    


    する必要があり、また、私はあなたがコンパイルすることを得たかどうかはわかりません。 IN (があり、ORDER BY句に値のリストを追加します。 ORDER BYの前にリストを追加し、ループを終了した後にORDER BYを追加する必要があります。

  • 関連する問題