Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony][Propel] Wyrażenie ... WHERE ... IN (SELECT ...), jak skonstruować takie wyrażnie?
Thomashek
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.12.2007

Ostrzeżenie: (0%)
-----


Mam problem z rozkazaniem klasie, aby pokazała tylko takie obiekty, których wartość ID nie występuje w kolumnie wartości ID2 innej tabeli, czyli chcę tak rozkazać klasie wygenerowanej przez Propela, aby przetłumaczyła to na taki SQL:
  1. SELECT tabela1.ID FROM tabela1 WHERE tabela1.ID NOT IN (SELECT tabela2.ID2 FROM tabela2)


W jaki sposób tego dokonać?

Z góry dziękuję za odpowiedzi
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Thomashek
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 14.12.2007

Ostrzeżenie: (0%)
-----


Hm, chciałem zrobić coś w rodzaju:
  1. <?php
  2. $c = new Criteria();
  3. $c->add('tabela1.ID NOT IN (SELECT tabela2.ID2 FROM tabela2)');
  4. return Tabela1Peer:doSelect($c);
  5. ?>


Jednak to zapytanie wewnątrz add() jest konwertowane na niepoprawne :/ Można w jakiś prosty sposób dodać warunek w postaci zwykłego SQLa do zapytania?

//dodano:
Powyższy sposób działa, jeśli zamiast tamtego add-a zrobi się taki:
  1. <?php
  2. $c->add('tabela1.ID NOT IN (SELECT ID2 FROM tabela2)');
  3. ?>

Czyli usunąć trzeba nazwę tabeli przed polem. Ale to i tak rozwiązanie bardzo naokoło, nie podoba mi się (choć już działa) :/

//dodano2:
Tfu, nie działa. Bo dodaje IS NULL na końcu. Potrzebuję nadal odpowiedzi na pytanie, czy można dodać warunek w postaci zwykłego SQLa do obiektu Criteria?

Ten post edytował Thomashek 21.08.2008, 13:51:09
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 10:16