SQL-Kopfnuss

Thema wurde von Christian Mueller, 21. Mai 2016 erstellt.

  1. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.825
    Danke erhalten:
    982
    Danke vergeben:
    312
    Ich würde gerne eine Abfrage erstellen, die mir aus language_phrases_cache alle Datensätze anzeigt, die mit language_id=2 vorhanden sind, aber nicht mit language_id=1

    Hintergrund: Sprachdateien zu pflegen ist nicht ganz einfach, weil man nicht mitbekommt wenn neue Konstanten eingepflegt werden. Damit würde man zumindest die fehlenden Konstanten aufspüren können.

    Selbst in der aktuellen Honeygrid-Version gibt es im Sprachcache mehrere Hundert Konstanten weniger mit language_id= 1 als mit language_id=2.
     
  2. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    116
    Danke vergeben:
    20
    Code:
    SELECT * FROM language_phrases_cache WHERE language_id = 2
     
  3. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.125
    Danke vergeben:
    947
    #3 Anonymous, 22. Mai 2016
    Zuletzt bearbeitet: 22. Mai 2016
    Das wird wohl nicht viel bringen. Christian wie viele Sprachen hast du denn? Vielleicht kommst du hiermit weiter, wenn du 2 Sprachen hast:

    Code:
    SELECT *, COUNT(*) c FROM language_phrases_cache GROUP BY phrase_name HAVING c < 2
    Das dürfte dir die Phrases anzeigen, für die es weniger als 2 language Einträge gibt.
     
  4. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.825
    Danke erhalten:
    982
    Danke vergeben:
    312
    Das Zeigt mir alle Datensätze an mit language_id=2. Das ist aber nicht das was ich will.
    Ich will dass mir alle Datensätze für language_id=2 angezeigt werden für die es keine Sprachvariablen mit language_id=1 gibt.
     
  5. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.125
    Danke vergeben:
    947
    ... oder was Verschachteltes? Ungeprüft:

    Code:
    SELECT phrase_name from language_phrases_cache where language_id = 1 
    and phrase_name not in (select phrase_name from language_phrases_cache where language_id =2)
     
  6. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.125
    Danke vergeben:
    947
    Ach so dann umgekehrt:

    Code:
    SELECT phrase_name from language_phrases_cache where language_id = 2
    and phrase_name not in (select phrase_name from language_phrases_cache where language_id =1)
     
  7. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    16. Januar 2016
    Beiträge:
    656
    Danke erhalten:
    116
    Danke vergeben:
    20
    Code:
    SELECT * FROM language_phrases_cache WHERE language_id != 1
    oder habe dich noch immer nicht ganz verstanden :D
     
  8. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.825
    Danke erhalten:
    982
    Danke vergeben:
    312
    Ich habe 3 Sprachen. Englisch, Deutsch und Französisch.
     
  9. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.825
    Danke erhalten:
    982
    Danke vergeben:
    312
    Nein, hast Du nicht...
     
  10. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.825
    Danke erhalten:
    982
    Danke vergeben:
    312
    Das sieht schon schön aus, einen Teil könnte man damit wenigstens erschlagen.

    Ich habe 3 Sprachen. Englisch, Deutsch und Französisch. Mir geht es in der Hauptsache um Französisch, aber ich habe dabei festgestellt daß im Shop auch sehr viele Englische Konstanten fehlen.

    Ich möchte gerne ein Tool haben, mit dem man übersichtlich (!) die Konstanten in allen Sprachen bearbeiten kann und dabei gerade die fehlenden Konstanten identifizieren kann.

    Das Highlight wäre dann, wenn man aus dem Sprachcache die Sprachdateien neu erzeugen könnte, um dann saubere Sprachdateien zu haben. Aber das wäre der letzte Schrit.
     
  11. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.825
    Danke erhalten:
    982
    Danke vergeben:
    312

    Ihr habt Euch scheinbar beide noch nicht wirklich die Tabelle angeschaut.
    Eindeutig ist eine Sprachvariable nur in Kombination von section_name und phrase_name. Dazu kommt die language_id.
     
  12. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.125
    Danke vergeben:
    947
    Ich hab sie mir angeschaut. Was passt bei mir nicht? Es werden alle phrase_names angezeigt, für die es in Englisch einen Eintrag gibt, aber in deutsch nicht. So wolltest du es!
     
  13. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.125
    Danke vergeben:
    947
    Oder sollen die Einträge angezeigt werden, die es nicht gibt :)
     
  14. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.825
    Danke erhalten:
    982
    Danke vergeben:
    312
    Ich hab's umgestellt und es funktioniert tatsächlich. Danke!
    Es fehlen in meinem französischen Modul nur 1,2% er Konstanten und die meisten davon gehören ins Backend und müssen nicht unbedingt übersetzt werden.

    Im Originalen Englischen fehlen übrigens doppelt so viele...
     
  15. Anonymous
    Anonymous Erfahrener Benutzer
    Mitarbeiter
    Registriert seit:
    22. Juni 2011
    Beiträge:
    4.760
    Danke erhalten:
    1.749
    Danke vergeben:
    137
    Ich würde noch dies in den Ring werfen:
    Code:
    SELECT l1.*, l2.*
    FROM `language_phrases_cache` l1
    left outer join language_phrases_cache l2 on l1.language_id = 2 and l2.language_id = 1 and l1.phrase_name = l2.phrase_name and l1.section_name = l2.section_name
    WHERE l1.language_id = 2 and l2.language_id is null
     
  16. Christian Mueller
    Christian Mueller Beta-Held
    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.825
    Danke erhalten:
    982
    Danke vergeben:
    312
    Performt auf jeden Fall besser :)