Zapytania SQL

Mam 2 pytania w związku z tym

  1. Jak można w ruby wykorzystać zapytania zagnieżdżone i jakieś bardziej złożone zapytania pobierające/porównujące dane z kilku tabel w bazie.
    Bardzo prosiłbym o jakiś przykład

  2. Korzystając z

@zmienna = Tabela.find(:co_znalezc)

znajduje tylko po kolumnie, która się nazywa ID w tej Tabeli. A jak znaleźć po innej kolumnie?
Miałem tabelę z kolumną user_id, ale z braku wiedzy na ten temat zamieniłem ją na id i aplikacja zadziałała.

Jeśli masz kolumnę user_id, to masz też metodę Tabela.find_by_user_id(). Fajne nie? :wink:

No bajer - faktycznie spotkałem sie już z tym, ale jakoś nie skojarzyłem tego teraz.

A pytanie nr 1 ?!

zawsze możesz zrobić coś takiego:

@wynik = Model.find_by_sql(“SELECT * FROM …”)

to oczywiscie niezbyt ladne rozwiazanie i jesli tylko da sie tego uniknac to nalezy unikac :wink:

 @suma = Account.find_by_sql 'SELECT SUM(value) AS razem FROM accounts'

a w widoku

Razem: <%= @suma.razem %>

A dostaję błąd

Czyżby podwójna tablic? Jak się dostać do tej mojej wartości?

Z tego co pamietam jest chyba metoda count_by_sql() i takie zapytanie powinno zadzialac

edit: tak zwane “czytanie ze zrozumieniem”, porazka :slight_smile:

[quote=BlueMan] @suma = Account.find_by_sql 'SELECT SUM(value) AS razem FROM accounts'
a w widoku

Razem: <%= @suma.razem %>

A dostaję błąd

Czyżby podwójna tablic? Jak się dostać do tej mojej wartości?[/quote]
Raczej spróbuj zrobić tak:

Account.sum(:value, :conditions=>... tu ewentualne warunki)

więcej w dokach: http://api.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html#M000955

Zwykłe

Account.sum('value')

Wystarczyło :wink:

Szukałem podobnych metod w ::Base, ale widocznie gdzie indziej to było w API. Dzięki :slight_smile: