Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Allgemeines zu Drupal ›

Wertevorkommen innerhalb eines Inhaltstyps zählen - wie?

Eingetragen von Rikibu (257)
am 05.05.2011 - 12:30 Uhr in
  • Allgemeines zu Drupal
  • Drupal 6.x oder neuer

Hallo liebe Gemeinde,

Ich wühle mich derzeit durch den Dickicht an Tabellen mit den teils wirren Bezeichnungen, um meine SQL Abfragen zu formulieren, allerdings komme ich nicht weiter.

Was hab ich vor?
Ich habe in meinem Inhaltstyp Lexikon gibt es verschiedene Felder wie

- Begründer (über Taxonomie mit Hierarchical select realisiert)
- Herkunft (Taxonomie 2 stufig, mit Kontinent- und korrespondierenden Ländern)
- Waffeneinsatz (wahlweise ohne, optional, mit)
usw...

Jetzt möchte ich einen Block haben, der alle Vorkommen zusammengefasst wie folgt darstellt.

Lexikoninhalte
xxx Einträge im Lexikon (das hab ich schon hinbekommen)
aus xxx Ländern
von xxx Begründern
xxx ohne Waffen
xxx mit Waffen
xxx optionale Waffen

Eigentlich weiß ich zumindest einigermaßen was ich tun muss, nämlich die Referenzen auf die jeweiligen Werte zählen (nicht die definierten Werte an sich zählen).

Allerdings blicke ich beim Blick in die Tabellen nicht durch um die entsprechenden richtigen Tabellen bzw. Variablen anzusprechen.

Meine Zählung der Lexikoneinträge funktioniert erstmal soweit.
So ähnlich müsste ja dann auch die Abfrage für die Anzahl der Vorkommen für die entsprechenden Werte des Inhaltstyps sein.

<?php
print db_result(db_query("SELECT COUNT(nid) FROM {node} WHERE nid > 0 AND status = 1 AND type IN('%s')", implode(',', array('kampfstile')))); ?>
Kampfstile gelistet.

Würde mich freuen, wenn mir jemand etwas unter die Arme greifen könnte, SQL is auch noch neu für mich.

Danke schon mal im Voraus.

‹ [gelöst] (D7) Übersetzung nach der Umstellung der Sprache unvollständig Falsches datum und Uhrzeit seit Serverumzug. ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

An Deiner Stelle würde ich

Eingetragen von leda.ch (977)
am 05.05.2011 - 13:52 Uhr

An Deiner Stelle würde ich mich jetzt mit dem Modul Views befassen:

1. Wirst Du wahrscheinlich 80% Deiner Anforderungen sofort abdecken können
2. Kannst Du Dir den SQL von Views zusammenbauenlassen und ihn woanders weiternutzen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo leda, du wirst lachen,

Eingetragen von Rikibu (257)
am 06.05.2011 - 09:37 Uhr

Hallo leda,

du wirst lachen, mit Views hab ich schon einiges hier durchexerziert, was man auch an den vielen Fragen meinerseits hier im Forum sehen kann :-)
Aber auf die Idee, sich die SQL Anweisungen von Views zusammenzimmern zu lassen, muss man erstmal kommen.

Das dürfte in der Tat einiges an Sucherei ersparen.
Oft sind die naheliegendsten Lösungen aber im Dickicht der Möglichkeiten schwer zu finden :-)

ma sehn ob ich das hinkrieg...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ja genau - die Erkenntnis aus

Eingetragen von leda.ch (977)
am 06.05.2011 - 10:02 Uhr

Ja genau - die Erkenntnis aus Punkt 2 hat mich auch Nerven gekostet ;-D
Viel Erfolg!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mmmh, ich muss das hier noch

Eingetragen von Rikibu (257)
am 10.05.2011 - 10:00 Uhr

Mmmh, ich muss das hier noch mal hochschubsen.

irgendwie krieg ich das nich hin, die Sachen zu zählen.

Views erstellt mir zb. folgende SQL Anweisung

SELECT node_data_field_art_der_kampfkunst.field_art_der_kampfkunst_value AS node_data_field_art_der_kampfkunst_field_art_der_kampfkunst_value,
   COUNT(node.nid) AS num_records
FROM node node
LEFT JOIN content_type_kampfstile node_data_field_art_der_kampfkunst ON node.vid = node_data_field_art_der_kampfkunst.vid
WHERE (node.type in ('kampfstile')) AND (node.status <> 0)
GROUP BY node_data_field_art_der_kampfkunst_field_art_der_kampfkunst_value
  ORDER BY node_data_field_art_der_kampfkunst_field_art_der_kampfkunst_value ASC

Wirkt doch leicht überfrachtet irgendwie

Die Frage is jetzt, wie bau ich das in ne php Anweisung ein? um zb. die beiden Kampfstiltypen zu zählen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Generell hast Du mit Deiner

Eingetragen von leda.ch (977)
am 10.05.2011 - 10:33 Uhr

Generell hast Du mit Deiner Anforderung mehr als 1 Datensatz als Rückgabe zu erwarten, da muss eine Schleife her:

    $query = db_query(db_rewrite_sql("xxx"));
   
    while ($temp = db_fetch_object($query)) {
        $kampfstil = $temp->node_data_field_art_der_kampfkunst_field_art_der_kampfkunst_value;
        $anzahl    = $temp->num_records;
    }

an der Stelle mit xxx klebst Du deinen SQL rein. In der Schleife kannst Du dann die gewonnen Werte nutzen, allenfalls wieder in einen anderen array tun, wie auch immer.
Der SQL sieht nur so wirr aus, weil die Aliase so gross sind.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke erstmal für deine

Eingetragen von Rikibu (257)
am 10.05.2011 - 10:47 Uhr

Danke erstmal für deine Idee.
Mmmmh. im Grunde sind es 2 Werte... es gibt 2 fix definierte Auswahlmöglichkeiten für "art_der_kampfkunst".
Diese will ich halt zählen lassen. aber ich Moment stell ich mich echt zu blöd an.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo leda hab es jetzt an

Eingetragen von Rikibu (257)
am 10.05.2011 - 12:34 Uhr

Hallo leda

hab es jetzt an sich erstmal hinbekommen. Die Werte werden angezeigt, aber ich hab ein Problem mit der Anzeige.
Hast du vielleicht ne Idee wie ich das mit der Anzeige machen könnte?

Wie kann ich vor den Werten noch die Bezeichnung anzeigen?
Normal steht die ja im $temp Array drin, aber ich krieg die nich angezeigt...

ich hab echt alles probiert aber ich bin grad wie blöd.

Danke für deine Hilfe.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hmm, steht doch in der

Eingetragen von leda.ch (977)
am 10.05.2011 - 14:46 Uhr

Hmm, steht doch in der Schleife: $kampfstil. Diese Variable wird dann halt in der Schleife zweimal abgefüllt, da ja auch 2 Datensätze geholt werden.
Die musst Du dann auf 2 Variablen verteilen.
Kannst Du Dir mit dem Modul Devel mit dsm() die Variablen mal anzeigen lassen - hat der SQL überhaupt einen result?

  • Anmelden oder Registrieren um Kommentare zu schreiben

wie gesagt, die Werte (im

Eingetragen von Rikibu (257)
am 10.05.2011 - 15:13 Uhr

wie gesagt, die Werte (im ersten durchlauf 5 , beim zweiten ne 2) werden ja korrekt angezeigt. ich bräuchte halt nur noch die bezeichnungen davor.

www.kampfstile.de - rechts oben in dem Bereich, da siehstes wie es derzeit aussieht...
werds mir gleich noch mal zu gemüte führen...

  • Anmelden oder Registrieren um Kommentare zu schreiben

So ich noch mal.ich versteh

Eingetragen von Rikibu (257)
am 10.05.2011 - 19:23 Uhr

So ich noch mal.

habs jetzt hinbekommen. mit ner simplen if abfrage
vielleicht nicht elegant, aber es funktioniert...

jetzt kann ich mich daran machen die anderen Detailvariablen auszuwerten.

Danke für deine Hilfe, hat mir sehr weitergeholfen. Wenn ich noch mal Probleme hab, kann ich dich hoffentlich hier weiter mit Fragen löchern?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Also sowieso: im if musst du

Eingetragen von leda.ch (977)
am 10.05.2011 - 19:22 Uhr

Also sowieso:
im if musst du 2x== haben, z.B.
if ($kampfstil==1) $art='innere';

auf deiner Site sehe ich dies:

7 Kampfstile gelistet
==================
innere: 5
äußere: 2

Das wäre doch korrekt und sieht ok aus??
Willst Du denn für "innere" und "äussere" was anderes haben?
Ich seh jetzt Deinen Fehler nicht...

  • Anmelden oder Registrieren um Kommentare zu schreiben

:-) mich oder jemand anderen

Eingetragen von leda.ch (977)
am 10.05.2011 - 19:28 Uhr

:-)
mich oder jemand anderen - gibt viele hilfsbereite Menschen hier!

Viel Erfolg weiterhin!

  • Anmelden oder Registrieren um Kommentare zu schreiben

nene so wie s jetzt is, isses

Eingetragen von Rikibu (257)
am 10.05.2011 - 19:30 Uhr

nene so wie s jetzt is, isses ok... ich hatte vorher nur das Problem, dass er die Bezeichnung immer mit der letzten (aus dem letzten Schleifendurchlauf) überschrieben hat.

da stand dann

äußere 2
äußere 5

hab dann aber irgendwie das mit der if anweisung drumherumgebastelt und jetzt gehts wie du siehst

ich hoffe das geht jetzt mit den anderen Werten zügiger. muss ja eigentlich nur variablen und sql befehl tauschen...

  • Anmelden oder Registrieren um Kommentare zu schreiben

So ich muss hier nochmal

Eingetragen von Rikibu (257)
am 12.05.2011 - 10:00 Uhr

So ich muss hier nochmal nachfragen.

Irgendwie hab ich Probleme die Taxonomiewerte zu zählen.
Ich hab Taxonomien für den Begründer und Herkunft (2 Stufig Kontinent->Land).

die SQL Anweisung sieht wiefolgt aus.

SELECT node_data_field_begruender.field_begruender_value AS node_data_field_begruender_field_begruender_value,
   COUNT(node.nid) AS num_records
FROM node node
LEFT JOIN content_type_kampfstile node_data_field_begruender ON node.vid = node_data_field_begruender.vid
WHERE (node.type in ('kampfstile')) AND (node.status <> 0)
GROUP BY node_data_field_begruender_field_begruender_value
  ORDER BY node_data_field_begruender_field_begruender_value ASC

Damit müsste ich ja sicherstellen, dass nur referenzierte (also wirklich benutzte) Einträge gezählt werden.

irgendwie komm ich aber nich drauf, wie ich die Gesamtzahl der verwendeten Einträge (nicht die Häufigkeit) rauskrieg.
geht das mit dem SQL Befehl count?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Mach mal ein Beispiel: 100

Eingetragen von leda.ch (977)
am 12.05.2011 - 12:34 Uhr

Mach mal ein Beispiel:
100 Leute, 60 aus D, 30 aus A, 10 aus CH, 0 aus F, 0 aus FL, 0 aus I.

Was willst als Resultat haben:
1.
D: 60
A: 30
CH: 10
F: 0
FL: 0
I: 0

oder
2.
D: 60
A: 30
CH: 10

oder ??

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo leda sorry für meine

Eingetragen von Rikibu (257)
am 12.05.2011 - 17:03 Uhr

Hallo leda

sorry für meine späte Rückmeldung, hab die Mail erst jetzt gesehn.

also ich wollte in meiner Übersicht einfach eine Summe aller Länder haben.
Jedes Land einzeln zu addieren und anzuzeigen wird glaub ich zu viel - wir haben schätzungsweise 300 Datensätze...

Eine Summe der Länder würde reichen. also das man dann sowas wie "von x Kontinenten und x Ländern).

Danke schon mal für deine Hilfsbereitschaft.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Damit ist der SQL aus einer

Eingetragen von leda.ch (977)
am 12.05.2011 - 21:44 Uhr

Damit ist der SQL aus einer Node-View bereits aus dem Rennen, weil der auch ein Distinct Count immer auf NID-Ebene passiert.
Du solltest zunächst versuchen, die relevanten Daten als View ohne Gruppierung zusammenzustellen, und dann im php den SQL als als Sub-SQL mit einer eigenen Gruppierung zu nutzen.
Das bedingt aber eher bessere SQL-Kenntnisse.
So als outline hiesse das:

sql aus der view: select foo from bar

neuer sql in mit subsql:
select foo, count(*) from
(select foo from bar)
group by foo

Hoffe das hilft.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Puh, wie kompliziert is das

Eingetragen von Rikibu (257)
am 12.05.2011 - 22:36 Uhr

Puh, wie kompliziert is das denn.
aber müsste es nich reichen in der Schleife einfach ne zweite variable zu nehemn, die das ergebnis der $anzahl variable aufnimmt? nach dem Muster $summe=$summe+$anzahl;

werde das morgen mal ausprobieren.
nur wie ich die auswahl auf die zweite taxonomieebene begrenze, das muss ich ma sehn. schätze mal dass das nach dem einlesen n 2 dimensionales array wird... aber das is nur spekulation.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du musst erst in der View

Eingetragen von leda.ch (977)
am 13.05.2011 - 09:08 Uhr

Du musst erst in der View folgenden Output erzielen, ohne irgendeinen Count:
Node-Id, Kontinent, Land

Damit hast Du den inneren SQL.

Den kannst Du dann im PHP-Teil zählen, gruppieren etc. wie du willst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

das is agar nich so einfach

Eingetragen von Rikibu (257)
am 13.05.2011 - 09:26 Uhr

das is agar nich so einfach :-) ich versuch aber weiter, danke für deine Hinweise.

  • Anmelden oder Registrieren um Kommentare zu schreiben

hab mir überlegt, vielleicht

Eingetragen von Rikibu (257)
am 13.05.2011 - 12:10 Uhr

hab mir überlegt, vielleicht ist es einfacher, die Anzahl der Begriffe im entsprechenden Vokabular zu zählen. Aber selbst das krieg ich nich wirklich gebacken.

das müsste ja in jedem fall mit dem count befehl gehen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Rikibu schrieb das müsste ja

Eingetragen von Anton (288)
am 13.05.2011 - 14:44 Uhr
Rikibu schrieb

das müsste ja in jedem fall mit dem count befehl gehen

Oder einfach mit dem Modul Term Node Count :-)

  • 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 2 Tagen
  • Hey danke
    vor 7 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 7 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 8 Wochen 23 Stunden
  • Da scheint die Terminologie
    vor 8 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 8 Wochen 5 Tagen
  • In der entsprechenden View
    vor 8 Wochen 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 8 Wochen 5 Tagen
  • gelöst
    vor 11 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 11 Wochen 2 Tagen

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 11 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