2012-01-16 17 views
1

誰でも私がまとめようとしているMySQLクエリを手伝ってもらえますか?私は次のように2つのテーブルを持っています(例の場合のみ)。MySQL SELECTは別のテーブルのデータから開始しますか?

uk_postcodes 
____________ 
Pcode | County  | Region 
AB10 | Aberdeen  | Scotland 
AB11 | Aberdeen  | Scotland 
B10 | West Midlands | West Midlands 

p_venues 
________ 
id | Venue_name  | address_postcode 
1 | Samples venue | AB10 1AT 
2 | Samples venue | B10 2DZ 

は簡単に言えば、私はp_venuesテーブル内の対応する郵便番号(address_postcode)に基づいてテーブルuk_postcodesからRegionを選択しようとしています。

私はLike%REGEXP ^を試しましたが、動作させられないようです。

これは私が試したものです...

SELECT * FROM `uk_postcodes`, `p_venues` 
WHERE `p_venues`.address_postcode REGEXP^`uk_postcodes`.Pcode 

私は特にハードコードデータを供給できるが、問題は、クエリの存在の第二の部分の比較(uk_postcodes.Pcode)である場合、これは簡単だろうフィールド - 私は構文の権利を得ることができません。

誰でもお手伝いできますか?

ありがとうございました

答えて

4

これはすべきです。 LIKEワイルドカードをuk_postcodesのPcode値に連結する必要があります。列の長さが固定長のテキストの場合は、最初に末尾のスペースをトリムする必要があります。

SELECT p.*, u.Region 
FROM p_venues p 
     INNER JOIN 
       uk_postcodes u 
       ON p.address_postcode LIKE CONCAT(u.Pcode, '%') 
+0

こんにちは、このためのおかげでtable2のT2に参加します。 + '%'を削除すると、上記のように動作します。すぐに私はこれを追加すると、構文エラーがスローされますか? – Rob

+0

あなたはそれがうまく動作しないと言うと、あなたが期待する領域を得ますか、それともエラーなく実行しますか?あなたが得ている構文エラーは何ですか? –

+0

+ '%'部分を削除した場合、 'address_postcode'の値が' Pcode'と全く同じであれば正しい領域が表示されます。つまり、AB10は正しい領域を引くでしょう。したがって、ワイルドカード%が動作していないこの部分です。 – Rob

0

あなたはテーブルに参加する必要があると思います。理論的には、私は、これはI''mは、ワイルドカードの一部の問題に実行し、再び動作しますが、どのように見る - 表1 t1の内部はt1.col = t2.col

関連する問題