WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 25.03.2004, 14:57   #1
Nestrus
Elite
 
Registriert seit: 01.07.2000
Alter: 40
Beiträge: 1.400


Nestrus eine Nachricht über ICQ schicken
Standard Bitte um Hilfe bei SQL abfrage

Hallo,

ich arbeite an einem Teil eines Umfrageprogramms, das wir hier mit PHP und SQL (über en ADODB-wrapper, ich hab hier MySQL drauf) entwickeln.
Eigentlich war mein Teil schon fertig, allerdings wurde jetzt das Datenbankdesign etwas geändert, weshalb ich ein SQL neu schreiben muss. Nun komme ich einfach nicht darauf, wie ich dieses eine Qerry machen muss. *grummel*

Es geht dabei um folgende Tabellen:
Code:
CREATE TABLE poTAnswer (
  nAnswerNR int(11) NOT NULL auto_increment,
  nSortOrder float NOT NULL default '0',
  nQuestionNR int(11) NOT NULL default '0',
  nTypeNR int(11) NOT NULL default '0',
  nAnswer float default NULL,
  sAnswer varchar(250) NOT NULL default '',
  dCreate datetime NOT NULL default '0000-00-00 00:00:00',
  nUserNRCreator int(11) NOT NULL default '1',
  PRIMARY KEY  (nAnswerNR),
  UNIQUE nSortOrder(nQuestionNR,nSortOrder),
  FOREIGN KEY (nQuestionNR) REFERENCES poTQuestion ON DELETE CASCADE,
  FOREIGN KEY (nTypeNR) REFERENCES poTType,
  KEY nUserNRCreator (nUserNRCreator)
) TYPE=MyISAM AUTO_INCREMENT=1 

/* RELATIONS FOR TABLE poTAnswer:
    nAnswerNRBefore
        poTAnswer -> nAnswerNR
    nQuestionNR
        poTQuestion -> nQuestionNR
    nTypeNR
        poTType -> nTypeNR
*/;

# --------------------------------------------------------

DROP TABLE IF EXISTS poTQuestion;
CREATE TABLE poTQuestion (
  nQuestionNR int(11) NOT NULL auto_increment,
  nPollNR int(11) NOT NULL default '0',
  nTypeNR int(11),
  nSortOrder float NOT NULL default '0',
  sName varchar(8),
  sQuestion text NOT NULL default '',
  dCreate datetime NOT NULL default '0000-00-00 00:00:00',
  nUserNRCreator int(11) NOT NULL default '1',
  nCategoryNR int(11) NULL default NULL,
  PRIMARY KEY  (nQuestionNR),
  FOREIGN KEY nPollNR (nPollNR) REFERENCES poTPoll,
  FOREIGN KEY (nCategoryNR) REFERENCES poTCategory,
  KEY nSortOrder (nPollNR,nSortOrder),
  KEY nUserNRCreator (nUserNRCreator)
) TYPE=MyISAM AUTO_INCREMENT=1 

/* RELATIONS FOR TABLE poTQuestion:
    nPollNR
        poTPoll -> nPollNR
    nQuestionNRBefore
        poTQuestion -> nQuestionNR
*/;

# --------------------------------------------------------

CREATE TABLE poTUserAnswer (
  nUserAnswerNR int(11) NOT NULL auto_increment,
  nQuestionNR int(11) NOT NULL default '0',
  nCaseNR int(11) NOT NULL default '0',
  nAnswerNR int(11) default NULL,
  sAttribute text default NULL,
  nAttribute float default NULL,
  PRIMARY KEY  (nUserAnswerNR),
  FOREIGN KEY (nQuestionNR) REFERENCES poTQuestion,
  FOREIGN KEY (nCaseNR) REFERENCES poTCase,
  FOREIGN KEY (nAnswerNR) REFERENCES poTAnswer
) TYPE=MyISAM AUTO_INCREMENT=1 ; 

/* RELATIONS FOR TABLE poTUserAnswer:
    nAnswerNR
        poTAnswer -> nAnswerNR
    nCaseNR
        poTCase -> nCaseNR
*/;
Ich brauche alle User Antworten nAttribute und sAttribute (aus poTUserAnswer), die zu einer Frage (nQuesionNR, aus poTQuestion) eines Fragebogens nPollNR gehören. Außerdem den Typ der Frage nTypeNR aus poTQuestion und (jetzt kommts *g*) die vorgefertigten Antworten sAnwer und nAnswer aus poTAnswer, wenn der user in potUserAnswer diese gwählt hat (nAnswerNR). Natürlich sollen aber trozdem auch die Datensätze aus potUserAnswer kommen, bei denen das Feld nAnswerNR NULL ist.

So, ich hoffe das war halbwegs verständlich.
Irgendwie hab ich das mit den anderen joins verlernt, und ich kann nur noch left inenr joins, da ich eigentlich fast immer nur diese brauch


Viel, vielen Dank schon mal für alle, die sich den Text bis hier her durchgeschaut haben und mir evtl. Helfen können.
Nestrus
____________________________________
"reden 2 unsinn im wcm forum, meint der dritte is eh offtopic"
(Gifty am 14. Apr 2002 um 22:47 in " WCM Rat & Tat Forum > Meinung > Guru, e-Zitate & Off Topic > Kommt ein Mann zum Arzt...")
Nestrus ist offline   Mit Zitat antworten
Alt 28.03.2004, 23:34   #2
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

hi !

kannst eine access db, welche die tabellen und die beziehungen dieser beinhaltet anhängen ?
im idealfall mit ein paar daten und dem gewünschten abfrageergebnis als .txt Datei anbei - dann ist die aufgabenstellung klar.
(sorry - hab keine lust, um die zeit noch tabellen zu erstellen)

werd mir das dann morgen anschauen (wenn zeit).

fg
-hannes
Biri ist offline   Mit Zitat antworten
Alt 28.03.2004, 23:55   #3
Nestrus
Elite
 
Registriert seit: 01.07.2000
Alter: 40
Beiträge: 1.400


Nestrus eine Nachricht über ICQ schicken
Standard

Hallo Biri,


danke für die Antwort, ich hätt gar nicht gedacht, dass hier jemand antwortet (und noch weniger dass es je jemand versteht) was wohl daran liegt, dass ich diesen thread schon fast vergessen hätte.

Naja, wie eigentlich immer hab ich mal wider viel zu kompliziert gedacht. (Deshalb wolle ich auch euch fragen, damit mir jemand sagt, dass es hier noch einen einfachen Weg geben würde, den ich nicht sehe.)
Ich hab das Problem eigentlich noch am selben Tag, als ich das gepostet habe gelöst, wen's interresiert:

Code:
SELECT Q.nTypeNR AS QnTypeNR, UA.sAttribute AS UAsAttribute, UA.nAttribute AS UAnAttribute, A.sAnswer as AsAnswer, A.nAnswer as AnAnswer
        FROM poTQuestion Q, poTUserAnswer UA, poTAnswer A
        WHERE UA.nQuestionNR = Q.nQuestionNR AND
        A.nAnswerNR = UA.nAnswerNR AND
        Q.nPollNR = ".$attributes['polls']."AND
        Q.nTypeNR != 8
        ORDER BY UA.nCaseNR;
(Wer sich wundert, warum ich für jedes Feld einen alias vergebe: Es geht mit ADODB nicht anders und ich hab den wrapper nicht ausgesucht...)

Nochmals danke für deine angebotene Hilfe und entschuldigung dass ich nicht geschrieben hab dass das Problem schon wieder hinfällig ist.

Gruß
Nestrus
____________________________________
"reden 2 unsinn im wcm forum, meint der dritte is eh offtopic"
(Gifty am 14. Apr 2002 um 22:47 in " WCM Rat & Tat Forum > Meinung > Guru, e-Zitate & Off Topic > Kommt ein Mann zum Arzt...")
Nestrus ist offline   Mit Zitat antworten
Alt 30.03.2004, 18:25   #4
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

hi !

na ist ja kein problem.

ich verwend meisten access zum abfrage bauen (als echtes DBS ists eher nix) - aber das was man will kann man so grob mit dem assistenten machen - den feinschliff dann mit reinem sql.

außerdem kann man das ergebnis schnell kontrollieren.

ad adodb: hab das bei einem php + sql-server-db projekt verwendet. finds nicht schlecht - ist aber nun schon länger her und es gibt inzwischen sicher eine neuere version davon.

fg
-hannes
Biri ist offline   Mit Zitat antworten
Alt 30.03.2004, 18:50   #5
Nestrus
Elite
 
Registriert seit: 01.07.2000
Alter: 40
Beiträge: 1.400


Nestrus eine Nachricht über ICQ schicken
Standard

Access will ich eigentlich nicht installieren, zumal ich nicht dauernd unter win arbeite...

Zitat:
Original geschrieben von Biri
ad adodb: hab das bei einem php + sql-server-db projekt verwendet. finds nicht schlecht - ist aber nun schon länger her und es gibt inzwischen sicher eine neuere version davon.
Naja, es war nicht meine Entscheidung, aber ich glaube auch dass es Vorteile hat, die die paar Einschränkungen wieder wett machen. (zB ist es sehr frein zu den Ergebnisen zu kommen: eine while-Schleife an deren Ende einfach das Ergebnisarray um eine Stelle weiter versetzt wird)
____________________________________
"reden 2 unsinn im wcm forum, meint der dritte is eh offtopic"
(Gifty am 14. Apr 2002 um 22:47 in " WCM Rat & Tat Forum > Meinung > Guru, e-Zitate & Off Topic > Kommt ein Mann zum Arzt...")
Nestrus ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:13 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag