Mysql
 sql >> база данни >  >> RDS >> Mysql

Избиране на множество колони/полета в MySQL подзаявка

Да, можете да направите това. Умението, от което се нуждаете, е концепцията, че има два начина за извеждане на таблици от сървъра за таблици. Един от начините е...

FROM TABLE A

Другият начин е

FROM (SELECT col as name1, col2 as name2 FROM ...) B

Забележете, че клаузата select и скобите около нея са маса, виртуална маса.

И така, използвайки втория ви пример за код (предполагам за колоните, които се надявате да извлечете тук):

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

Забележете, че вашата реална таблица attribute е първата таблица в това присъединяване и тази виртуална таблица, която нарекох b е втората таблица.

Тази техника е особено удобна, когато виртуалната таблица е някаква обобщена таблица. напр.

SELECT a.attr, b.id, b.trans, b.lang, c.langcount
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, at.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)
JOIN (
 SELECT count(*) AS langcount,  at.attribute
 FROM attributeTranslation at
 GROUP BY at.attribute
) c ON (a.id = c.attribute)

Вижте как става това? Вие генерирахте виртуална таблица c съдържащ две колони, го присъедини към другите две, използва една от колоните за ON клауза и върна другия като колона във вашия набор от резултати.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли начин за поддържане на db връзка (pk/fk) в следния сценарий

  2. как да махна дял без изпускане на данни в MySQL?

  3. Извличане на данни от MySQL база данни с помощта на PHP, показване във форма за редактиране

  4. MySQL получава низ(ове) между две # / множество двойки #

  5. Как да свържете колони с Laravel 4 Eloquent?