sql >> Database teknologi >  >> RDS >> Mysql

Foretag en engangsforespørgsel til en anden database og tabel

Hvis det antages, at det er tilgængeligt ved hjælp af de samme database-legitimationsoplysninger og på den samme MySQL-server, ville den nemmeste måde være at køre en forespørgsel, der specificerer databasen og tabellen i FROM klausul i forespørgslen, som sådan:

ActiveRecord::Base.connection.select_one(
    "SELECT * FROM blog_database.posts ORDER BY created_at DESC LIMIT 1")

select_one returnerer en hash af kolonner til værdier. For mere information om metoder, du kan bruge på connection objekt, se denne dokumentation .

Den anden mulighed er at oprette en underklasse af ActiveRecord og kalde establish_connection :

class Blog < ActiveRecord::Base
  establish_connection :blog

  def self.most_recent_post
    connection.select_one("SELECT * FROM posts ...")
  end
end

Du skal også lave en blog databaseindtastning i din database.yml fil. Se establish_connection for flere detaljer, selvom det desværre kun er kendt at bruge det på denne måde ved at se på kildekoden for establish_connection .

Så kan du bruge blogdatabaseforbindelsen i forespørgsler, som sådan:

Blog.connection.select_one("SELECT * FROM posts ...")

Det, der er rart ved at gøre det på denne måde, er, at du nu har et godt sted at definere en metode (i Blog-klassen, som en klassemetode) til at hente dataene, som jeg har gjort ovenfor.

Begge disse strategier burde fungere fint med Rails 2.x eller 3.x.




  1. WIDTH_BUCKET() Funktion i Oracle

  2. Spring jdbctemplate batchopdatering hurtigt alternativ

  3. Vælg top 10 poster for hver kategori

  4. MYSQL trunkeret forkert INTEGER-værdifejl