Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

Doppelte Resultate bei Ergebnis von Ansichten

Eingetragen von klausi (76)
am 19.02.2009 - 22:51 Uhr in
  • Views
  • Drupal 6.x

Hallo Leute,

irgendwie stehe ich gerade "auf dem Schlauch"!

Ich habe zu Testzwecken einen Inhaltstypen geschaffen, der zwei Felder enthält: Pflanzen und Farbe.
Zusammen bilden sie den Titel des Beitrags (z.B. rote Rosen, gelbe Rosen, blaue Veilchen, etc.).

Nun möchte ich mir mit Hilfe des Viewsmoduls alle Pflanzen in einer Liste anzeigen lassen: Rosen, Veilchen etc.
Dummerweise zeigt er mir aber die Rosen doppelt an: Rosen, Rosen, Veilchen.

Warum ist mir klar: es gibt ja schließlich zwei nodes (rote Rosen, gelbe Rosen).
Aber kann man diese doppelten Einträge in der Liste (Farben sollen nicht angezeigt werden) irgendwie vermeiden?

Sollte doch einfach realisierbar sein, aber ich bekomme diese simple Abfrage einfach nicht gebacken )-:

‹ Profile Field wird nicht in View angezeigt Child Nodes in Parent Nodes anzeigen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Da gibt's doch "Eindeutig"

Eingetragen von r4s6 (1383)
am 20.02.2009 - 11:28 Uhr

Im "Block" Basiseinstellungen von Views gibt's die Option Eindeutig, stell die mal auf Ja das sollte eigentlich reichen.

Gruss Roger

  • Anmelden oder Registrieren um Kommentare zu schreiben

doppelte Einträge in Viewsansicht

Eingetragen von klausi (76)
am 20.02.2009 - 12:50 Uhr

Danke für Deinen Tip!
Diesen Punkt hatte ich völlig übersehen!
Allerdings hat dies nicht zum Erfolg geführt - immernoch doppelte Ergebnisse )-:

Hier mal die Einstellungen (Ansicht als Seite):

Filter --> Node: Typ = Pflanzentypen
Felder --> Inhalt: Pflanzen - (field_pflanzen) Titel (Link)

Basiseinstellungen
Design --> Tabelle
Eindeutig --> Ja

Pfad und Titel wurden von mir noch vergeben (aber das sollte wohl keine Rolle spielen ...)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, Dein Titel/Link ist

Eingetragen von leda.ch (977)
am 20.02.2009 - 13:59 Uhr

Hallo,

Dein Titel/Link ist eben _eindeutig_! Wenn Du den in Deiner Select Clause hast (sieh mal beim SQL der View nach), dann bleibt es auch bei der Einstellung "eindeutig" bei zwei Einträgen.

Würdest Du das Feld "Titel" aus der View entfernen, ginge es wohl. Du hast dann aber das Problem, dass Du _keinen_ Link hinkriegst, weil die View dann ja nicht weiss, welche Ausprägung z.B. der Rose Du haben willst...

IOW: Deine Datenstruktur müsste anders werden, je nachdem, was Deine Inhalte sind.

Eine Möglichkeit wäre, einen generischen Inhaltstyp "Pflanzen" zu machen, und dann die Sorten und Eigenschaften über Taxonomy zuzuweisen. Damit könntest du z.B. auch alle roten Blumen finden.

Eine andere Idee ist, dies echt relational aufzuziehen (mit Nodereference), aber das könnte in Deinem Fall vielleicht auch zuviel des guten sein.

lg leda

  • Anmelden oder Registrieren um Kommentare zu schreiben

Änderung des Beispiels

Eingetragen von klausi (76)
am 23.02.2009 - 16:49 Uhr

Da ich mich vermutlich unverständlich ausgedrückt habe, werde ich hier ein neues Beispiel beschreiben, um das Problem vielleicht damit besser zu skizzieren:

zwei Inhaltstypen: PERSON und TÄTIGKEIT
PERSON (Name, Vorname, Adressdaten etc.)
TÄTIGKEIT (Gruppe, Aufgabe, nodereference auf PERSON)

Warum nicht 1 Inhaltstyp?
Eine Person kann in mehreren Gruppen und mit unterschiedlichen Aufgaben tätig sein (in Gruppe A - Aufgabe A, in Gruppe A - Aufgabe C, in Gruppe B - Aufgabe A).
Daher hatte ich die Idee, um eine halbwegs relationale DB zu erzeugen, einen extra Inhaltstyp zu kreieren (TÄTIGKEIT).

Das Abfrageproblem (Ansichten - Views):
Nun möchte ich mir mit Hilfe des Viewsmoduls alle die PERSONEN in einer Liste anzeigen lassen, die speziell in Gruppe A tätig sind (es entfallen folglich Personen die keiner Gruppe angehören und damit keiner Tätigkeit nachgehen oder dies tun, aber eben nicht in Gruppe A). Ein view auf die Gruppe A mit Anzeige der Personen (nodereference).
Dummerweise zeigt er mir aber die Personen doppelt an, die mehrere Aufgaben innerhalb der Gruppe A ausführen.

Aber kann man diese doppelten Einträge (Name der Person) in der Liste (Aufgabe und Gruppe sollen nicht angezeigt werden) irgendwie vermeiden?
Die aufgelisteten Namen sollten natürlich auf die entsprechende Node verlinken (Adresse der Person).

Sollte doch einfach realisierbar sein, aber ich bekomme diese simple Abfrage einfach nicht gebacken )-:

  • Anmelden oder Registrieren um Kommentare zu schreiben

Bis dahin sollte Deine

Eingetragen von leda.ch (977)
am 23.02.2009 - 17:28 Uhr

Bis dahin sollte Deine Konstruktion funktionieren.
(obwohl Dein Beispiel eine n:n:n Relation ist, aber solange Du den Gruppen nicht grösseres Gewicht beimisst, gehts...).

Aber eine Frage:

Hast Du in Deiner View im Abschnitt "Felder" solche, die NICHT zum Inhaltstyp PERSON gehören?
Wenn ja, dann bitte NUR Felder aus dem Inhaltstyp PERSON verwenden und den Schalter "eindeutig" auf ja.

Wenns denn immer noch nicht geht, dann bringe hier mal den SQL (wird in der Views-Vorschau angezeigt).

lg
leda

  • Anmelden oder Registrieren um Kommentare zu schreiben

SQL & Co. zur Ansicht

Eingetragen von klausi (76)
am 24.02.2009 - 15:40 Uhr

Also hier mal der Code:

SELECT DISTINCT(node.nid) AS nid,
   node_data_field_funktion.field_person_nid AS node_data_field_funktion_field_person_nid,
   node_data_field_funktion.nid AS node_data_field_funktion_nid,
   node.type AS node_type
FROM node node
LEFT JOIN content_type_taetigkeit node_data_field_funktion ON node.vid = node_data_field_funktion.vid
WHERE node_data_field_funktion.field_funktion_value IS NOT NULL

und hier die Einstellungen der Ansicht:

Filter
Inhalt: Funktion - (field_funktion) nicht leer
Felder
Inhalt: Person - (field_person) Titel (Link)

Basiseinstellungen
Eindeutig: Ja

Die Idee:
Liste mir das Feld field_person (es handelt sich um eine nodereference auf die Tabelle PERSON und enthält einen Vor- und Zunamen) einmal auf, sofern das Feld field_funktion nicht leer ist (sprich die Person eine Funktion bzw. Aufgabe betraut).

Das Problem:
Da eine Person mehrere Funktionen (bzw. Aufgaben) haben kann, tauchen diese dann mehrmals auf.
Ich hätte aber gerne, dass jede Person, die eine Funktion inne hat, nur einmal aufgelistet wird....

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eben, hier liegt der Hase im

Eingetragen von leda.ch (977)
am 24.02.2009 - 15:58 Uhr

Eben, hier liegt der Hase im Pfeffer:

Zitat:

SELECT DISTINCT(node.nid) AS nid,
node_data_field_funktion.field_person_nid AS node_data_field_funktion_field_person_nid,
node_data_field_funktion.nid AS node_data_field_funktion_nid,
node.type AS node_type

Das "eindeutig" bezieht sich auf *alle* Felder im Select-Abschnitt, aber nur schon node_data_field_funktion.nid AS node_data_field_funktion_nid kommt pro Person eben mehrfach vor.

Ich werde das mal bei mir ausprobieren, wie genau die View hierfür erfasst werden sollte. Das Problem ist, dass Deine Lead-Tabelle die Funktion statt die Person ist.

  • Anmelden oder Registrieren um Kommentare zu schreiben

OK, Du hast recht - es geht

Eingetragen von leda.ch (977)
am 24.02.2009 - 19:56 Uhr

OK, Du hast recht - es geht wirklich nicht :-(

Die View kann nicht so umgebogen werden, dass der SQL letztlich so aussieht:

Zitat:

SELECT DISTINCT
node_data_field_name.field_name_value AS node_data_field_name_field_name_value,
node_data_field_name.nid AS node_data_field_name_nid
FROM fsm_node node
LEFT JOIN fsm_content_type_ct_funktion node_data_field_person ON node.vid = node_data_field_person.vid
INNER JOIN fsm_node node_node_data_field_person ON node_data_field_person.field_person_nid = node_node_data_field_person.nid
LEFT JOIN fsm_content_type_ct_personen node_data_field_name ON node_node_data_field_person.vid = node_data_field_name.vid
WHERE node.type in ('ct_funktion')

Lässt man ihn im phpMyAdmin laufen, dann bringt er exakt die Liste, die wir gerne hätten. Der SQL in der View sieht aber weitere Felder in der Select-Clause vor:

Zitat:

SELECT DISTINCT(node.nid) AS nid,
node_data_field_name.field_name_value AS node_data_field_name_field_name_value,
node_data_field_name.nid AS node_data_field_name_nid,
node_node_data_field_person.type AS node_node_data_field_person_type
FROM fsm_node node ...

In der View lässt sich die relationale Richtung nicht umkehren: Aktuell ist immer eine "Child-Tabelle" Lead...ich hoffe, in einer Views 3 wird man das SQL-Statement händisch anpassen können...

In diesem Fall würde ich wahrscheinlich folgenden Ansatz wählen:

1. Inhaltstyp Person
2. Taxonomy-Vokabular für Gruppen, für Person zulassen
3. Taxonomy-Vokabular für Funktionen, für Person zulassen

Damit kann man den einzelnen Personen 1-n Gruppen und 1-n Funktionen zuordnen (so werden notabene auch Personen möglich, die in einer Gruppe sind, aber *keine* Funktion haben).
Ausserdem hast Du in der View dann nur 1 Inhaltstyp zu managen, und nach den Gruppen und Funktionen kann separat gefiltert werden.

Vielleicht hilft Dir das weiter...

lg leda

  • Anmelden oder Registrieren um Kommentare zu schreiben

1 Inhaltstyp

Eingetragen von klausi (76)
am 24.02.2009 - 20:45 Uhr

Den Ansatz alles in einem Inhaltstyp zu vereinigen hatte ich zunächst auch, ihn aber dann verworfen ...

Auf jeden Fall vielen Dank, daß Du Dich damit beschäftigt hast!

Ist es eigentlich möglich, eine Ansicht/View "auszutricksen" und die SQL-Abfrage direkt in die Datenbank zu schreiben (unter dem Namen der Ansicht sozusagen)?

Dies würde mir auch bei einem anderen Problem helfen:
innerhalb einer Ansicht wird eine Änderung der voreingestellten Jahresspanne ("-3:+3") nicht akzeptiert!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich hab' da noch was gefunden

Eingetragen von r4s6 (1383)
am 24.02.2009 - 21:04 Uhr

Bei meinem Spatziergang durch die Module habe ich noch etwas entdeckt, was evtl. noch weiterhelfen könnte: http://drupal.org/project/term_fields

Ich habe mir das Module jetzt noch nicht angesehen, aber von der Beschreibung her könnte das zur Problemlösung beitragen.

Gruss Roger

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, das Rabbit69

Eingetragen von schneseb (160)
am 18.03.2010 - 20:02 Uhr

Hallo,

das

Rabbit69 schrieb

Im "Block" Basiseinstellungen von Views gibt's die Option Eindeutig, stell die mal auf Ja das sollte eigentlich reichen.

hat mir eben super in einem anderen Fall geholfen :-) Vielen Dank!

Gruß
Sebastian

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • canadian pharmacy lotrisone cream used for cellulitis
  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 7 Wochen 1 Tag
  • Hey danke
    vor 7 Wochen 1 Tag
  • Update: jetzt gibt's ein
    vor 7 Wochen 2 Tagen
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 40 Minuten
  • Da scheint die Terminologie
    vor 8 Wochen 3 Stunden
  • Kannst doch auch alles direkt
    vor 8 Wochen 4 Tagen
  • In der entsprechenden View
    vor 8 Wochen 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 8 Wochen 4 Tagen
  • gelöst
    vor 11 Wochen 23 Stunden
  • Ja natürlich. Dass ist etwas,
    vor 11 Wochen 1 Tag

Statistik

Beiträge im Forum: 250234
Registrierte User: 20461

Neue User:

  • WugPiola
  • marouane.blel
  • capilclinic

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 27 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association