SQL Abfrage so richtig?
Eingetragen von C-tecx (27)
am 21.05.2014 - 15:59 Uhr in
am 21.05.2014 - 15:59 Uhr in
Hallo,
ich möchte von der Drupal Tabelle "taxonomy_index" alle node Ids (nid) einer bestimmten "tid" abfragen. gehen wir mal davon aus, der Query liefert mir die nid 1, 5 und 7.
Nun möchte ich mit einem weiteren SQL Query alle Node Titel der IDs 1, 5 und 7 abfragen. Derzeit sieht meine SQL Code so aus
$query = db_select('taxonomy_index', 't');
$query->fields('t',array('nid'))//SELECT the fields from node
->condition('tid', 122, '=');
$result = $query->execute();
foreach ($result as $record) {
$query1 = db_select('node', 'n');
$query1->fields('n',array('title'))//SELECT the fields from node
->condition('nid', $record->nid, '=');
$result1 = $query1->execute();
foreach ($result1 as $record1) {
print $record1->title."<br>";
}
}
Geht das eigentlich auch irgendwie einfacher? Also die Ausgabe liefert mir zwar die richtige Ausgabe aber ich bin nicht gerade der SQL Experte und meine ein foreach im foreach ist nicht gerade das Gelbe vom Ei...
- Anmelden oder Registrieren um Kommentare zu schreiben
C-tecx schrieb Geht das
am 21.05.2014 - 17:04 Uhr
Geht das eigentlich auch irgendwie einfacher?
klar, indem man die beiden relevanten Tabellen verbindet, Stichwort JOIN.
Ich setze meist den prozeduralen Stil ein:
<?php
$result = db_query('select title
FROM {taxonomy_index, node}
WHERE taxonomy_index.nid = node.nid
AND taxonomy_index.tid = 122')
foreach($result as $record) {
dpm($record); // ma reingucken
print $record['irgendwas'];
}
?>
Wenn Du das mit db_select
am 21.05.2014 - 22:27 Uhr
Wenn Du das mit db_select machen möchtest:
$query = db_select('taxonomy_index', 't');
$query->fields('t',array('nid'));
$query->condition('tid', 122);
$query->innerJoin('node', 'n', 'n.nid = t.nid');
$query->fields('n', array('title'));
$result = $query->execute();
Besten Dank für die
am 22.05.2014 - 08:56 Uhr
Besten Dank für die Antworten! Hat mich ein ganzen Stück weiter gebracht! Finde db_query irgendwie auch einfacher als db_select.
Hi, noch ein kleiner
am 22.05.2014 - 09:04 Uhr
Hi,
noch ein kleiner Hinweis.
Mit db_select kannst Du gleich Drupal Paging Mechanismus (Pager) verwenden.
Mit dp_query musst Du das selbst hinbekommen.
MfG
Robert