2012-04-10 13 views
0

私はできる限り最善を尽くすようにシーンを設定します。どのような私はacheiveしようとしていますが、このMySQLクエリの結果をマージする

  1. 検索image_likesある*ライトキャンドル

    は、ユーザーが任意の画像を気に入っているかどうかを確認してから、次のクエリでそれらを含めることができます。

  2. imagesからアップロードした画像をすべて網羅してください。
  3. 両方の結果だけでなく、ORDER BY id DESCも表示します。

私はMySQLで恐ろしいですが、別のテーブルの結果を含めることになると、私は十分な情報が含まれていると思います。もう必要があれば教えてください。

表構造

image_likes

ID | user_id |

images

IDをimage_idは| uploader_id |日付

+0

あなたは非常に奇妙なテーブル構造を持っている場合を除き、これは単一 'joined'クエリでなんとかする必要があります:http://en.wikipedia.org/wiki/Join_%28SQL%29 –

+0

本当に参考になる何か既に試したコードですが、結果は – orourkek

+0

@ orourkekでした。私は試したことはありませんが、むしろ調査しました。そして、彼らは非常に多くの異なる種類の結合です。どこから始めたらいいのか分かりませんでした。 – Harry

答えて

-1

1:

SELECT * FROM Image_Likes WHERE User_Id = x ORDER BY Id DESC 

2:

SELECT * FROM Images WHERE Uploader_Id = x ORDER BY Id DESC 

3:(すべて一緒に)

SELECT L.*, I.* FROM Image_Likes L LEFT JOIN Images I ON L.Image_id = I.Id WHERE L.User_ID = x ORDER BY I.Id DESC 

ユーザーID

+0

明確にするために、これは 'images'のすべての' image_likes'結果を選択して検索しますか? – Harry

+0

また、#1064 - SQL構文に誤りがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文がLEFT JOINイメージの近くで使用されていることを確認してください。I ON L.Image_id = I.Id ORDER BY I.Id DESC LIMIT 0,30 '1行目:( – Harry

+0

はい!最初のビット(Image_LikesのIDの一致)のすべての結果を取得し、Imagesテーブルの対応する値でそれらを結合しようとします(ON l.image_id = I.id) – citizenen

0

でxを交換し、あなたが本当に試してみてくださいJOINを把握する。あなたは継続的に悪いコードを書いて、悪いデータベースを使ってそれらを使う方法を知らずに設計します。

SELECT * 
FROM images 
LEFT JOIN image_likes ON image_likes.image_id = images.id 
WHERE image_likes.user_id = $my_id 
OR images.creator_id = $my_id 
ORDER BY images.id DESC 
+0

コードは意図したとおりに動作しません。現在のユーザーがアップロードしている場合、他の人々が好きです。私はそれを持って遊びます – Harry

+0

@Trendeeもし私が間違っていないなら、私はあなたがON句にANDを加えて 'image_likes.user_id = $ my_id'を追加することができると信じています – dqhendricks

関連する問題