2011-11-15 12 views
0

マイページ情報と画像は2つのテーブルに格納されています。テーブル「ページ」から「タイプ」と「ボディ」が必要です。次に、 "page_images"テーブルから "images"を取得します。どちらも同じページから明らかです。

ランダムなページをいくつか欲しいです。しかし、私は "page_images"と "page"の "type"と "body"から1つのイメージが必要です。私はデモ5かそこらのランダムなページを望むMySQLクエリを使用して2つのテーブルから情報を取得しようとしています

function OnTheSpot() { 
     $query = mysql_query("SELECT page.body AS desc, page.style AS styles, page_images.image_loc AS images 
           FROM page 
           LEFT JOIN page_images 
           ON page.url_title = page_images.page_title 
           ORDER BY RAND() 
           LIMIT 1 
          "); 
     while($fetch = mysql_fetch_assoc($query)) { 
      $desc = $fetch['desc']; 
      $styles = $fetch['styles']; 
      $images = $fetch['images']; 
      echo $desc.'<br />'; 
      echo $styles.'<br />'; 
      echo $images.'<br />'; 
      } 
     } 

...

-- TABLE page 

page_id | user_id | url_title  | title   | type | full_location | phone | body 
---------------------------------------------------------------------------------------- 
1  | 1  | jazz_showcase | Jazz Showcase | Jazz | ...   | ... | ... 

-- TABLE page_images 

image_id | user_id | page_title  | image_loc 
----------------------------------------------- 
1  | 1  | jazz_showcase | ... 
2  | 3  | jazz_showcase | ... 
3  | 2  | something_else | ... 

このクエリは動作しません(画像は、テーブルpage_imagesの 'image_loc' として保存されます)。各ページには、1つのイメージとタイプと本文が表示されます。これはどのようにしてクエリされますか。

+0

あなたは 'RAND(BY ORDERを使用するたび)'、子犬が死にます:( – Polynomial

+0

'ORDER BY RAND()'が悪い理由の説明:http://www.titov.net/2005/09/21/do-not-use-order-by-rand-or-how-to- – Polynomial

+1

質問に答えてください。 – Graham

答えて

2

descをたとえばに変更します。 descrDescはMySQLの予約語なので、使用することはできません。

参照:MySQL Reserved Words

EDIT:ここもおそらくあなたの問題を解決し、あなたのためのクエリ、次のとおりです。

$query = "SELECT page.body AS descr, page.url_title, page.style AS styles, page_images.image_loc AS images FROM page,page_images WHERE page_images.page_title = page.url_title ORDER BY RAND() LIMIT 1"); 
+0

おい、いいね。それは完璧に働いた。 1ページに複数の画像を表示する方法はありますか?私がLIMIT 5を変更した場合は、それぞれ5枚の画像が1枚ずつ表示されます。 1ページに複数の画像を表示するにはどうすればよいですか?もう一度ありがとう – Graham

+1

descを使用することもできますが、バッククックで常に囲む必要があります。 – JAL

+0

@Grahamわかりません。あなたは2つの異なるクエリでそれを行うことができます、最初にページを取得し、そのページの5つの画像を取得します。私はそれを行うためにもっと洗練された方法がたくさん存在すると確信していますが、今のところそれはあなたを動かすかもしれません。 – budwiser

関連する問題