• Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

2 Tabellen auf einmal abfragen

klaus24

New member
Hallo

Ich habe 2 Tabellen mit unterschiedlicher Struktur.

In Tabelle 1 gibt es Informationen zu Kategorien.
In Tabelle 2 gibt es Synonyme zu Kategorien aus Tabelle 1.

Ich möchte nun mittels einer DB Abfrage über beide Tabellen ein Ergebnis bekommen.
Sortiert nach "name".
Das Problem ist, das Tabelle 1 ca. so aufgebaut ist.

category
- id
- name_de
- name_en

und Tabelle 2:

category_synonyms
- id
- category_id
. lang
- name


Ich möchte das Ergebnis Alphabetisch sortieren.
Bisher habe ich beide Tabellen getrennt abgefragt und ein Array gebildet. Dieses wollte ich sortieren.
Aber da in den Namen viel Sonderzeichen enthalten sind, krieg ich das Array nicht korrekt sortiert.

Kann man per Mysql sowas auch realisieren?
Inkl. Sortierung auch wenn die Spalten anders heißen.

Hoffe mir kann jemmand helfen.
 

klaus24

New member
Hi

Joinen habe ich bereits versucht aber das Problem tritt beim Order auf

in der einen Tabelle heisst die spalte "name" und in der anderen "name_de"

wenn ich nun zb folgendes tu

SELECT *,cf.name as name_de FROM `category` c
left join category_fakes cf on cf.category_id=c.id
where c.sub_cat_id=1
order by name_de

sagt mir mysql

Column 'name_de' in order clause is ambiguous

Ich habe auf die DB Struktur allerdings keinen Einfluß sondern sie ist mir gegeben.

Daher noch mal die Frage, wie ich das vielleicht doch noch hinbekommen kann?
 

michl

New member
"Column 'name_de' in order clause is ambiguous "
bedeutet, du hast mehrere Felder mit diesem Namen.

Du machst nen alias für
cf.name auf name_de, hast aber name_de schon in deiner "category" Tabelle. Jetzt möchte mysql wissen nach WELCHEM name_de du sortieren möchtest.

Ersetze "
order by name_de"
durch "order by c.name_de"

Oder mach nen anderen alias

 

klaus24

New member
HiHallo

Also zuvor hatte ich es ja auch schon so versucht. Also ohne den alias doppelt zu setzen.
Grundsätzlich funktioniert das dann auch nur sortiert er dann tabelle 1 oder 2.
Aber nicht beide in einem Ergebnis

Ich habe jetzt zb sortiert bekommen, alle Kategorien aus Tabelle 1
und zwar A...B...C...D...E und beim B kommt dann eine Zeile
aus der 2. Tabelle mit F

Von A bis dahin warten die Werte der 2. Tabelle alle NULL.(was ja auch in Ordnung ist)

Ich möchte aber gerne, das ich eine sortierte Liste aus beiden Tabellen bekomme.

Also das der F-Name aus Tabelle 2 auch am F steht.

Das ist mein problem und ich weiss nicht wie ich das lösen kann.

aktuell habe ich das jetzt

SELECT c.name_de, cf.name, c.id, cf.fake_category_id
FROM category c
LEFT JOIN category_fakes cf ON cf.category_id = c.id
ORDER BY c.name_de
LIMIT 300
 
Oben