Puncte:4

Este posibil să aveți un SELECT imbricat într-o clauză WHERE folosind interogări dinamice?

drapel cn

Trebuie să execut această interogare SQL folosind interogări dinamice.

UNDE (node_field_data.status = 1) 
ȘI (node__field_document_places.entity_id IN (SELECTEAZĂ ID-ul entității FROM node__field_document_places unde field_document_places_target_id = 51673)) 

Acesta este codul pe care îl folosesc.

$conexiune = Baza de date::getConnection();
$interogare = $conexiune->select('node_field_data', 'node_field_data');

$query->condition('node_field_data.status',1);
$query->condition('node__field_document_places.entity_id',[ -- Pot face asta cumva aici? -- ], "IN");

Din punct de vedere tehnic, aș putea rula o interogare separată și să pun ID-urile într-o matrice. Dar speram să evit să execut două interogări diferite.

Există o modalitate de a face acest lucru folosind interogări dinamice?

Puncte:4
drapel cn

Da, acest lucru este foarte posibil, vezi Subinterogările pot fi acum adăugate la condițiile de interogare modificați înregistrarea pentru detalii complete.

Exemplul canonic este foarte asemănător cu al tău și ar trebui să demonstreze cum să refactorizezi codul:

// Creați o subinterogare, care este doar un obiect de interogare normal.
$subinterogare = db_select('test', 't2');
$subquery->addExpression('AVG(t2.age)');

// Creați o altă interogare care adaugă o clauză folosind subinterogarea.
$select = db_select('test', 't');
$select->addField('t', 'nume');
$select->condition('t.age', $subquery, '<');

Nu uitați să înlocuiți cel depreciat db_select() cu $conexiune->select().

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.