1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

subqueries / phpmyadmin

  • seHaas
  • 30. Januar 2005 um 16:35
  • Unerledigt
  • seHaas
    11
    seHaas
    Mitglied
    Reaktionen
    3
    Punkte
    1.238
    Beiträge
    206
    • 30. Januar 2005 um 16:35
    • #1

    hab eine etwas gefinkelte sql abfrage, local auf meinem rechner funktioniert sie, wenn ich das ganze projekt dann aufn webserver gebe bekomm ich eine null-pointer-exception (c#.net) die hängt irgendwie mit der query zusammen, aber ich kanns nicht genau sagen... zum testen hab ich die query per phpmyadmin am server abgesetzt aber da geht dann einfach gar nix.... habs dann mit einer einfach subquery probiert, auch das klappt nicht...

    SQL
    SELECT id FROM gbook WHERE pid=0 AND id NOT IN (SELECT DISTINCT pid FROM gbook);


    ich bekomm dann immer diese meldung zurück, fängt immer bei der subquery an, egal wie komplex es vorher ist bzw was nachher noch kommt:

    Code
    #1064 - Fehler in der Syntax bei 'SELECT DISTINCT pid FROM gbook) LIMIT 0, 30' in Zeile 1.

    kanns sein dass das daran liegt das automatisch das LIMIT 0,30 dazugefügt wird? kann man das wo abstellen?

  • beefy
    13
    beefy
    Mitglied
    Reaktionen
    18
    Punkte
    1.683
    Beiträge
    304
    • 30. Januar 2005 um 18:22
    • #2

    MySQL? Wenn ja, welche Version? (Siehe http://dev.mysql.com/doc/mysql/en/rewriting-subqueries.html.)

  • seHaas
    11
    seHaas
    Mitglied
    Reaktionen
    3
    Punkte
    1.238
    Beiträge
    206
    • 30. Januar 2005 um 20:02
    • #3

    am server 4.0.22 und local irgend was höheres....
    hab jetzt mit einem left join gemacht aber da dauert die abfrage über 10sec, das ist schon lange oder?
    naja mal an index drüber legen und schaun wie es dann ausschaut!

  • Fup
    12
    Fup
    Mitglied
    Punkte
    1.460
    Beiträge
    291
    • 30. Januar 2005 um 20:42
    • #4

    Jaja MySQL und Subqueries, am besten vermeiden, wenn möglich, evt. mit Joins oder mit Views arbeiten, oder gleich mit php verarbeiten.

    mfG Fup

  • seHaas
    11
    seHaas
    Mitglied
    Reaktionen
    3
    Punkte
    1.238
    Beiträge
    206
    • 30. Januar 2005 um 23:26
    • #5

    naja ich hatte es eh zuerst, dass ich zwei queries absetze.... aber ich wollts eben anders machen... ach ja, nachdem ich die indizes reingegeben habe, waren die anfragen auch um ca 500% schneller *gg* jetzt läuft alles wie es soll.

    danke nochmal

  • theli
    2
    theli
    Mitglied
    Punkte
    25
    Beiträge
    4
    • 31. Januar 2005 um 06:41
    • #6

    Bist du sicher daß das die Query ist die du machen willst?

    SQL
    SELECT id FROM gbook WHERE pid=0 AND id NOT IN 
    (
       SELECT DISTINCT pid FROM gbook
    );

    Obiege query bedeutet ja eigentlich:
    Gib mir alle Einträge von gbook die pid gleich 0 haben und die nicht in gbook sind?!
    Wie kann es sein dass es daten gibt mit pid=0 die aber nicht in der Tabelle sind? Da stimmt was anderes nicht.

    Meinst du eventuell:

    SQL
    SELECT id FROM gbook WHERE (pid=0) OR (pid is null)

    LG,
    Martin

  • seHaas
    11
    seHaas
    Mitglied
    Reaktionen
    3
    Punkte
    1.238
    Beiträge
    206
    • 1. Februar 2005 um 00:12
    • #7

    nein das passt schon so... die tabelle ist so aufgebaut dass sie rekursiv auf sich selber ist, also PID is fremdschlu:ssel auf ID. aber in wahrheit nutze ich die rekursion nur eine stufe, also es gibt "haupteintra:ge" und "antworten".

    und ich will mit der query (und es funktioniert auch) alle haupteintra:ge zuru:ckbekommen die keine antworten besitzen. wenn die pid=0 dann ist es mal ein haupteintrag und dann muss eben gepru:ft werden ob es eh keinen anderen eintrag mit der aktuellen ID als PID gibt! und genau das besagt die query.

    es wa:hre noch zum u:berlegen ob es vllt nicht gscheiter wa:re, wenn ich noch ein attribut zur tablle dazugebe das mir eben anzeigt ob es anworten gibt oder nicht, das kann ich ja zb mita:ndern wenn ich eine antwort einfu:ge.

  • snowfox
    4
    snowfox
    Mitglied
    Punkte
    140
    Beiträge
    22
    • 1. Februar 2005 um 08:03
    • #8
    Zitat von Fup

    Jaja MySQL und Subqueries, am besten vermeiden, wenn möglich, evt. mit Joins oder mit Views arbeiten, oder gleich mit php verarbeiten.

    wieso eigentlich?

    irgendwo im nirgendwo in relation zu einem punkt.

  • Fup
    12
    Fup
    Mitglied
    Punkte
    1.460
    Beiträge
    291
    • 1. Februar 2005 um 10:03
    • #9
    Zitat von snowfox

    wieso eigentlich?

    Mit Ansi SQL bist du auf der sicheren Seite.

    Man kann zwei Ziele verfolgen.
    1.) Man schreibt in Ansi SQL und vermeidet unnötige komplizierte SQLs
    + man erspart sich das konvertieren der SQLs für eine andere DBMS
    - keine optimierten Abfragen
    - zusätzliche Verarbeitung mit php, ...

    2.) Oder aber man optimiert im speziellen für eine DBMS
    + schnellere Verarbeitung
    - Abfragen können sehr komplex und spezifisch sein, erschwert das Umschreiben

    Ich kenne die genaue Verteilung der genutzten DBMS im Internet nicht, aber ich bin mir ziemlich sicher, dass mySQL eine nicht ganz unwichtige Rolle spielt. mySQL ist keine schlechte DBMS, aber auch nicht so mächtig wie Postgre oder Oracle. Noch dazu ist die 3-er Version von mySQL am stärksten vertreten und die bietet nun mal weder Subqueries, noch Foreign Keys und ...

    mfG Fup

  • seHaas
    11
    seHaas
    Mitglied
    Reaktionen
    3
    Punkte
    1.238
    Beiträge
    206
    • 1. Februar 2005 um 15:20
    • #10
    Zitat von Fup

    Mit Ansi SQL bist du auf der sicheren Seite.

    Man kann zwei Ziele verfolgen.
    1.) Man schreibt in Ansi SQL und vermeidet unnötige komplizierte SQLs
    + man erspart sich das konvertieren der SQLs für eine andere DBMS
    - keine optimierten Abfragen
    - zusätzliche Verarbeitung mit php, ...

    2.) Oder aber man optimiert im speziellen für eine DBMS
    + schnellere Verarbeitung
    - Abfragen können sehr komplex und spezifisch sein, erschwert das Umschreiben

    Ich kenne die genaue Verteilung der genutzten DBMS im Internet nicht, aber ich bin mir ziemlich sicher, dass mySQL eine nicht ganz unwichtige Rolle spielt. mySQL ist keine schlechte DBMS, aber auch nicht so mächtig wie Postgre oder Oracle. Noch dazu ist die 3-er Version von mySQL am stärksten vertreten und die bietet nun mal weder Subqueries, noch Foreign Keys und ...

    Alles anzeigen

    unser ADAT lehrer hat mysql immer als mickey-maus-datenbank bezeichnet... er war halt ein oracle fan :winking_face:

    das mit den subqueries und foreign-keys kommt mir irgenwie komisch vor, ich hatte bis vor kurzem eine uralt mysql version und da haben die sachen sicher funktioniert. aber ich kann mich auch ta:uschen

  • snowfox
    4
    snowfox
    Mitglied
    Punkte
    140
    Beiträge
    22
    • 1. Februar 2005 um 16:10
    • #11
    Zitat von seHaas

    unser ADAT lehrer hat mysql immer als mickey-maus-datenbank bezeichnet... er war halt ein oracle fan :winking_face:

    das mit den subqueries und foreign-keys kommt mir irgenwie komisch vor, ich hatte bis vor kurzem eine uralt mysql version und da haben die sachen sicher funktioniert. aber ich kann mich auch ta:uschen

    ich würd sagen das hängt davon ab für welche zwecke und welches budget zur verfügung steht. für ein guestbook ist oracle wohl overkill :grinning_squinting_face:

    also bei der 3er version funzt es sicher nicht :)

    irgendwo im nirgendwo in relation zu einem punkt.

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung