Problem mit Filter
Eingetragen von andreaszdw (20)
am 26.01.2015 - 06:46 Uhr in
am 26.01.2015 - 06:46 Uhr in
In views versuche ich folgendes:
Wenn ich die Filter einzeln benutze klappt es, aber beide verknüpft mit "or" leider nicht.
Weiß jemand, was ich falsch mache?
Andreas
- Anmelden oder Registrieren um Kommentare zu schreiben
Was bedeutet "klappt
am 26.01.2015 - 07:42 Uhr
Was bedeutet "klappt nicht"?
Kommen zu viel oder zu wenig Datensätze?
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Klappt nicht
am 26.01.2015 - 07:43 Uhr
Es kommt gar nichts mehr.
Schon seltsam. Hast Du
am 26.01.2015 - 07:49 Uhr
Schon seltsam.
Hast Du eingestellt, daß Dir der SQL-Befehl angezeigt wird, den die View generiert?
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
SQL
am 26.01.2015 - 08:06 Uhr
Nein, wo kann ich das denn einstellen?
Damit müßte es
am 26.01.2015 - 08:16 Uhr
Damit müßte es gehen:
http://www.inmotionhosting.com/support/edu/drupal-7/views-module-tutoria...
Dann unter der Ansicht, wo Du Deine View editieren kanns auf Preview / Vorschau
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
admin/structure/views/setting
am 26.01.2015 - 08:20 Uhr
admin/structure/views/settings
Show SQl Query
SQL Query
am 26.01.2015 - 08:23 Uhr
Das kommt dabei rum:
SELECT node.sticky AS node_sticky, node.created AS node_created, node.nid AS nid
FROM
{node} node
INNER JOIN {field_data_field_mannschaft} field_data_field_mannschaft ON node.nid = field_data_field_mannschaft.entity_id AND (field_data_field_mannschaft.entity_type = 'node' AND field_data_field_mannschaft.deleted = '0')
INNER JOIN {field_data_field_inhaltsseite} field_data_field_inhaltsseite ON node.nid = field_data_field_inhaltsseite.entity_id AND (field_data_field_inhaltsseite.entity_type = 'node' AND field_data_field_inhaltsseite.deleted = '0')
WHERE (( (node.type IN ('artikel_bwo')) AND (field_data_field_inhaltsseite.field_inhaltsseite_value = 'Fussball') )OR( (node.type IN ('spielbericht')) AND (field_data_field_mannschaft.field_mannschaft_value = 'Erste') ))
ORDER BY node_sticky DESC, node_created DESC
LIMIT 10 OFFSET 0
kleiner Einwurf:
am 26.01.2015 - 08:41 Uhr
Da du nach Texten suchst, bist du sicher, dass diese Schreibweise in exakt dieser Form überall vorhanden ist?
Bedenke, Fußball ist nicht Fussball und auch nicht fussball oder fußball. Das sind vier verschiedene Werte.
Auch Erste und erste oder gar 1 oder 1. sind vier unterschiedliche Werte.
Steht gar noch ein Leerzeichen am Anfang oder Ende, gibt es noch mehr Kombinationen.
Entweder du stellst eine Like-Abfrage ein, oder du benutzt für diese Felder Taxonomies.
Grüße
Ronald
Ronald hat zwar recht
am 26.01.2015 - 08:44 Uhr
was die Taxonomie Geschichtet betrifft, aber jetzt deine Abfrage betreffend:
Erkenne kein Problem. Die WHERE Clause ist in Ordnung.
Ja, der Selectbefehl sieht OK
am 26.01.2015 - 08:48 Uhr
Ja, der Selectbefehl sieht OK aus.
Und Du bist ganz sicher, daß die Abfragen, die mit OR verknüpft sind, für sich funktionieren?
Geh doch mal sukzessive vor und lösche einen Filter nach dem anderen.
Also zuerst Mannschaft ='Erste' u.s.w.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Da bin ich mir sehr sicher,
am 26.01.2015 - 08:55 Uhr
Da bin ich mir sehr sicher, da die einzelnen Abfragen funktionieren? Nur wenn ich die eine Abfrage und die andere Abfrage mit "or" verknüpfe, wird nichts mehr angezeigt.
Nimm doch trotzdem mal Filter
am 26.01.2015 - 09:27 Uhr
Nimm doch trotzdem mal Filter für Filter einzeln weg, damit man einschränken kann, welcher Ärger macht.
Also zuerst den auf Fussball, dann auf Erste.
Die OR Verknüpfung aber stehen lassen.
So daß die Abfrage lautet "Ist entweder von dem einen oder vom anderen Typ".
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Wenn der Filter nur Erste ist
am 26.01.2015 - 09:45 Uhr
Wenn der Filter nur Erste ist funktioniert es, wenn nur Fussball ist, funktioniert es auch, sobald beide mit or verknüpft sind, funktioniert es nicht mehr.
Funktioniert:
SELECT node.sticky AS node_sticky, node.created AS node_created, node.nid AS nid
FROM
{node} node
INNER JOIN {field_data_field_inhaltsseite} field_data_field_inhaltsseite ON node.nid = field_data_field_inhaltsseite.entity_id AND (field_data_field_inhaltsseite.entity_type = 'node' AND field_data_field_inhaltsseite.deleted = '0')
WHERE (( (field_data_field_inhaltsseite.field_inhaltsseite_value = 'Fussball') ))
ORDER BY node_sticky DESC, node_created DESC
LIMIT 10 OFFSET 0
Funktioniert:
SELECT node.sticky AS node_sticky, node.created AS node_created, node.nid AS nid
FROM
{node} node
INNER JOIN {field_data_field_mannschaft} field_data_field_mannschaft ON node.nid = field_data_field_mannschaft.entity_id AND (field_data_field_mannschaft.entity_type = 'node' AND field_data_field_mannschaft.deleted = '0')
WHERE (( (field_data_field_mannschaft.field_mannschaft_value = 'Erste') ))
ORDER BY node_sticky DESC, node_created DESC
LIMIT 10 OFFSET 0
Funktioniert nicht:
SELECT node.sticky AS node_sticky, node.created AS node_created, node.nid AS nid
FROM
{node} node
INNER JOIN {field_data_field_mannschaft} field_data_field_mannschaft ON node.nid = field_data_field_mannschaft.entity_id AND (field_data_field_mannschaft.entity_type = 'node' AND field_data_field_mannschaft.deleted = '0')
INNER JOIN {field_data_field_inhaltsseite} field_data_field_inhaltsseite ON node.nid = field_data_field_inhaltsseite.entity_id AND (field_data_field_inhaltsseite.entity_type = 'node' AND field_data_field_inhaltsseite.deleted = '0')
WHERE (( (field_data_field_mannschaft.field_mannschaft_value = 'Erste') OR (field_data_field_inhaltsseite.field_inhaltsseite_value = 'Fussball') ))
ORDER BY node_sticky DESC, node_created DESC
LIMIT 10 OFFSET 0
Poste doch mal die Seite, wie
am 26.01.2015 - 09:59 Uhr
Poste doch mal die Seite, wie Du das mit den AND/ORs eingibst in Views. Man muss die Teile nämlich einrücken, damit eine Art Klammern (für die logische Auswertung) gesetzt werden.
Mir kommt es vor, also ob jetzt AND und OR auf gleicher Ebene sind.
lg leda
"Du liebst es, Du brauchst es oder Du gibst es weg"
www.leda.ch
(Kein Betreff)
am 26.01.2015 - 10:10 Uhr
Was ich nicht verstehe, wo im
am 26.01.2015 - 10:14 Uhr
Was ich nicht verstehe, wo im Select die Inner Joins her kommen, die mit And verbunden sind.
Ich habe gerade mal bei mir nachgeschaut und eine vorhandene View mit "OR" minimal angepasst, um Deinen Fall nachzubauen.
Das steht folgendes:
SELECT node.created AS node_created, node.nid AS nid
FROM
{node} node
WHERE (( (node.status = '1') AND (node.type IN ('page')) AND (node.title LIKE '%seo%' ESCAPE '\\') )OR( (node.title LIKE '%drupal%' ESCAPE '\\') AND (node.type IN ('blog')) ))
ORDER BY node_created DESC
LIMIT 10 OFFSET 0
Also entweder sei der Inhaltstyp Page und der Titel enthält SEO und der Node ist veröffentlicht oder der Inhaltstyp ist Blog und der Titel enthält Drupal.
Bei mir funktioniert das wunderbar.
Drupal und Views-Modul sind aktuell.
Welche Versionen hast Du?
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Diese View funktioniert
am 26.01.2015 - 10:23 Uhr
Diese View funktioniert nicht, da nicht beide Felder im gleichen Datensatz vorkommen. Es gibt also keinen Datensatz, für den beide INNER JOINS zutreffen.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Wie kriege ich denn die INNER
am 26.01.2015 - 10:25 Uhr
Wie kriege ich denn die INNER JOINS weg?
Ja wla, das meine ich
am 26.01.2015 - 10:26 Uhr
Ja wla,
das meine ich ja.
Aber warum baut die View den Inner Join überhaupt ein?
Bei meiner Test-View gibt es nur den Where-Bereich.
Aber die Filter-Gruppen-Einstellung sieht genaus aus.
Da kann ich bei Andreas Einstellungen keinen Fehler sehen.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Andreas, ist die View
am 26.01.2015 - 10:38 Uhr
Andreas, ist die View ansonsten ganz einfach gestrickt?
Oder gibt es CONTEXTUAL FILTERS, RELATIONSHIPS?
Und noch mal die Frage nach den Programm Versionen von Drupal und View.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Version Drupal ist 7.34 -
am 26.01.2015 - 10:47 Uhr
Version Drupal ist 7.34 - Views ist 7.x-3.8
Keine CONTEXTUAL FILTERS, keine RELATIONSHIPS
Tja gleiche Version, wie bei
am 26.01.2015 - 10:58 Uhr
Tja gleiche Version, wie bei mir...
Ich habe hier einen Export von der View erstellt.
Kannst ja mal bei Dir einen Export machen (View Liste -> Bei der entsprechenden View auf Export gehen).
Falls es dort schon mehrere Ansichten gibt, würde ich empfehlen, noch mal eine neue ganz einfachere View mit den obigen Einstellungen zu machen.
Sonst wird der Export so umfangreich.
$view = new view();
$view->name = 'test';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'test';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'test';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Zurücksetzen';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['pager']['options']['tags']['first'] = '« erste Seite';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ vorherige Seite';
$handler->display->display_options['pager']['options']['tags']['next'] = 'nächste Seite ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'letzte Seite »';
$handler->display->display_options['style_plugin'] = 'default';
$handler->display->display_options['row_plugin'] = 'node';
/* Feld: Inhalt: Titel */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = FALSE;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = FALSE;
/* Sort criterion: Inhalt: Post date */
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'node';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
$handler->display->display_options['filter_groups']['operator'] = 'OR';
$handler->display->display_options['filter_groups']['groups'] = array(
1 => 'AND',
2 => 'AND',
);
/* Filter criterion: Inhalt: Veröffentlicht */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Inhalt: Typ */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
'page' => 'page',
);
$handler->display->display_options['filters']['type']['group'] = 1;
/* Filter criterion: Inhalt: Titel */
$handler->display->display_options['filters']['title_1']['id'] = 'title_1';
$handler->display->display_options['filters']['title_1']['table'] = 'node';
$handler->display->display_options['filters']['title_1']['field'] = 'title';
$handler->display->display_options['filters']['title_1']['operator'] = 'contains';
$handler->display->display_options['filters']['title_1']['value'] = 'seo';
$handler->display->display_options['filters']['title_1']['group'] = 1;
/* Filter criterion: Inhalt: Titel */
$handler->display->display_options['filters']['title']['id'] = 'title';
$handler->display->display_options['filters']['title']['table'] = 'node';
$handler->display->display_options['filters']['title']['field'] = 'title';
$handler->display->display_options['filters']['title']['operator'] = 'contains';
$handler->display->display_options['filters']['title']['value'] = 'drupal';
$handler->display->display_options['filters']['title']['group'] = 2;
/* Filter criterion: Inhalt: Typ */
$handler->display->display_options['filters']['type_1']['id'] = 'type_1';
$handler->display->display_options['filters']['type_1']['table'] = 'node';
$handler->display->display_options['filters']['type_1']['field'] = 'type';
$handler->display->display_options['filters']['type_1']['value'] = array(
'blog' => 'blog',
);
$handler->display->display_options['filters']['type_1']['group'] = 2;
/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['path'] = 'test';
$translatables['test'] = array(
t('Master'),
t('test'),
t('more'),
t('Apply'),
t('Zurücksetzen'),
t('Sort by'),
t('Asc'),
t('Desc'),
t('Items per page'),
t('- All -'),
t('Offset'),
t('« erste Seite'),
t('‹ vorherige Seite'),
t('nächste Seite ›'),
t('letzte Seite »'),
t('Page'),
);
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
@montvisoDu filters nach dem
am 26.01.2015 - 11:58 Uhr
@montviso
Du filterst nach dem Titel, der immer vorkommt. Die Datenfelder, die oben angeführt werden, kommen aber nur im speziellen Inhaltstyp vor. Die liegen in eigenen Tabellen und müssen mit INNER JOIN angebunden werden. Das ist der Unterschied.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hast Recht,
am 26.01.2015 - 12:39 Uhr
Hast Recht, Werner...Gedankenfehler meinerseits.
Aber wenn ich das nachbaue mit einer Abfrage auf ein eindeutiges Feld des einen Inhaltstypen, dann wird ein Left Joint gebaut und kein Inner join.
LG Regina Oswald
-------------------------
Montviso - Internetdienstleistungen
http://www.montviso.de
Mit LEFT JOIN sollte das
am 26.01.2015 - 13:08 Uhr
Mit LEFT JOIN sollte das funktionieren. Ich denke, da ist noch irgendeine Randbedingung, die Views veranlaßt, einen INNER JOIN zu nehmen und das ist das Problem.
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *