Yardım IN kullanarak mysql sözdizimi!

4 Cevap php

i bir resim tablosu var: pictures(articleid,pictureurl)

Ve makaleler tablo: articles(id,title,category)

Yani, kısaca, her makale bir resim var, ve i articleid sütunu kullanarak yazı ile fotoğraf bağlantı. Şimdi i politic kategorisinde eşyaların 5 resimlerini seçmek istiyorum.

Ben buna kullanılarak yapılabilir düşünüyorum ama bunu nasıl anlamaya olamaz.

Not: Lütfen yalnızca bir sorgu, ben öncelikle o fotoğraf alma makaleleri seçerek bunu yapabilirsiniz çünkü.

Teşekkürler

4 Cevap

Eğer yerine bir IN sorgu arıyorsanız, bir JOIN Bu Alex'in sorgu için bir alternatiftir:

SELECT pictureurl 
  FROM pictures 
  WHERE arcticleid IN (SELECT id FROM articles WHERE category='politic') 
  LIMIT 5

Bunu yapabileceği bir kategoride makalelerden beş fotoğraf almak için:

SELECT pictures.pictureurl
  FROM articles, pictures
 WHERE articles.id = pictures.articleid AND articles.category = 'politic'
 ORDER BY [your sort criteria]
 LIMIT 5;

Sen soruyu biraz rephrasing düşünebiliriz.

(Yorumlara bakınız) açıklama için yeniden yazıldı:

Eğer sizin SELECT kriterlere ayrılmış kriterlerini JOIN tutmak isterseniz, aşağıdaki gibi bir şey yazabilirsiniz:

SELECT pictureurl
FROM pictures
JOIN articles ON id = articleid
WHERE category LIKE 'politics'
ORDER BY RAND()
LIMIT 5

, Öyle yazıldığı zaman niyet biraz açık bulmak ve belki de sadece benim, ama ben MySQL MySQL 5 boğması 4 altında çalıştı SELECT * FROM a, b, c şeklinde yazılmış karmaşık sorguları karşılaştığım yukarıdaki formatı işleri ise hem ince.

Eğer uygunluk için üniforma Kimlik sütun adlarını kullanmak ve daha karmaşık senaryolar kendinizi kafa karıştırıcı önlemek için eğer Ayrıca, yerine USING yan tümcesini kullanabilirsiniz. Haberler kimliği sütunu da articlesid adlı Yani, JOIN şöyle yazılabilir:

SELECT pictureurl
FROM pictures
JOIN articles USING (articleid)
...

Gerçekten bunun için IN kullanmak gerekmez. IN zaman yuva sorguları veya vermektedir karşı kontrol etmek için değerleri bilinen bir dizi varken.

politics kategorisinde 5 rastgele görüntüleri seçmek için:

SELECT pictureurl FROM articles, pictures WHERE pictures.articleid = articles.id AND articles.category = 'politics' ORDER BY RAND() LIMIT 5