php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.12.2008, 22:55  
Neuer Benutzer
 
Registriert seit: 21.12.2008
Beiträge: 29
mygov befindet sich auf einem aufstrebenden Ast
Standard

hi,

also ich habe mal probiert mit mysql aleine eine abfrage zu starten, ich kriege aber folgenden auswurf bei deinem:

#1054 - Unknown column 'S.EVENTID' in 'where clause'


habe es ein wenig modifiziert, kA obs richtig ist aber so glaube ich das du es gemeint hattest
Code:
SELECT a.ID, a.TITEL, a.BESCHREIBUNG, a.AUFWAND, (

SELECT GROUP_CONCAT( accepted.USERNAME )
FROM work_articlestatus AS accepted
WHERE a.ID = accepted.EVENTID
AND accepted.STATUS = 'accepted'
) AS accepted_users, (

SELECT s.STATUS, s.EVENTID
FROM work_articlestatus AS s
WHERE a.ID = s.EVENTID
AND s.USERNAME = 'mygov'
) AS user_status
FROM work_articlearea AS a
GROUP BY a.ID
da kriege ich aber dann folgende Fehlermeldung:

#1241 - Operand should contain 1 column(s)


Hmm?


EDIT:
Ich habe da vieleicht noch eine andere Idee.

Und zwar, wie währe den der Befehl im mysql das er die restichen werte mit Null anzeigt /auffüllt?

SELECT * FROM work_articlearea LEFT JOIN work_articlestatus ON work_articlearea.id=work_articlestatus.eventid WHERE username='mygov' GROUP BY eventid

Zeigt mir nämlich folgendes an:
id titel beschreibung aufwand eventid username status
1 testartikel 1 Blablab lbd klaj dbnksdfjsdbo ijhdskjfhsfd XXL 1 mygov accepted
2 testartikel 2 das ist die zweite beschreibung die es gibt und es... L 2 mygov wait

Hier wird aber der dritte Aritkel nicht mehr angezeigt, (er soll ja alle Artikel auflisten die er in work_articlearea hat...)
Was er eigl. ausgeben sollte(in der theorie):

id titel beschreibung aufwand eventid username status
1 testartikel 1 Blablab lbd klaj dbnksdfjsdbo ijhdskjfhsfd XXL 1 mygov accepted
2 testartikel 2 das ist die zweite beschreibung die es gibt und es... L 2 mygov wait
3 Testartikel 3 Blabla usw... b labla asdjadhf XXL


dann könnte man nämlich mit php sagen das er halt bei artikel 3 sich der user eintragen kann weil er ja noch nicht eingetragen ist und bei den oberen beiden hätte er bei Artikel 1 den status accepted und bei Artikel 2 den status wait...


Nun meine Frage wie ich ihm per mysql diesen unteren teil(blau markiert) übersetzen kann, so das er einmal alle artikel auflistet (aus der tabelle work_articlearea) und einmal den jeweiligen status pro artikel für den jeweiligen user ($username//eingeloggter user) raussucht (aus der tabelle work_articlestatus)...?

Er sollte natürlich auch trotzdem alle Artikel auflisten auch wenn er mit "where username='$username'" den usernamen z.B. nicht findet (z.b. für leute die neu erstellt wurden) d.h. er sollte folgendes ausgeben:

id titel beschreibung aufwand eventid username status
1 testartikel 1 Blablab lbd klaj dbnksdfjsdbo ijhdskjfhsfd XXL
2 testartikel 2 das ist die zweite beschreibung die es gibt und es... L
3 Testartikel 3 Blabla usw... b labla asdjadhf XXL

Geändert von mygov (29.12.2008 um 23:53 Uhr).
mygov ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.12.2008, 01:04  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von mygov Beitrag anzeigen
#1054 - Unknown column 'S.EVENTID' in 'where clause'
hm, vielleicht weil ich das S groß geschrieben habe. s.EVENTID

Im ersten Subquery steht das ja auch drin, unter anderem Namen
Zitat:
a.ID = accepted.EVENTID

Zitat:
da kriege ich aber dann folgende Fehlermeldung:

#1241 - Operand should contain 1 column(s)
Nimm die Abfrage
Code:
SELECT
  a.ID, a.TITEL, a.BESCHREIBUNG, a.AUFWAND,
  x, y
Statt der Felder x und y habe ich zwei weitere Abfragen eingesetzt.
Code:
SELECT
  a.ID, a.TITEL, a.BESCHREIBUNG, a.AUFWAND,
  (SELECT ...) as x, (SELECT ...) as y
Also verlangt MySQL, das die Abfragen jeweils genau ein Feld liefern, so wie es x,y auch machen.

Zitat:
Zitat von mygov Beitrag anzeigen
Ich habe da vieleicht noch eine andere Idee.

Und zwar, wie währe den der Befehl im mysql das er die restichen werte mit Null anzeigt /auffüllt?

SELECT * FROM work_articlearea LEFT JOIN work_articlestatus ON work_articlearea.id=work_articlestatus.eventid WHERE username='mygov' GROUP BY eventid
Du kannst die WHERE-Bedingung in die ON-Bedingung ziehen
Code:
SELECT
  *
FROM
  work_articlearea
LEFT JOIN
  work_articlestatus
ON
  work_articlearea.id=work_articlestatus.eventid
  AND username='mygov'
GROUP BY
  eventid
Aber dann erhälst Du nicht mehr die Ausgabe, wer schon alles den status accepted hat.
Das ist natürlich (für Dich und die Datenbank) eine wesentlich einfachere Abfrage. Wenn Du auf die Liste verzichten kannst, ist das die bessere Lösung.

Geändert von David (30.12.2008 um 01:14 Uhr).
David ist offline  
Alt 01.01.2009, 14:32  
Neuer Benutzer
 
Registriert seit: 21.12.2008
Beiträge: 29
mygov befindet sich auf einem aufstrebenden Ast
Standard

so habe deine erste Lösung genommen, da der nachteil an der zweiten der ist, das auch die artikel wieder nicht vollständig aufgelistet werden, warum auch immer....
Jedenfalls funktioniert die erste mit den Subquery perfekt

Vielen lieben Dank für deine mühen!!
mygov ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySql Suche über verschiedene Tabellen - Ergebnis dabei reduzieren padrone Datenbanken 0 04.11.2008 18:43
[Erledigt] If in einer While schleifen RedDragon PHP Tipps 2008 16 20.07.2008 20:02
PHP Array in MYSQL Tabellen schreiben Matt Datenbanken 1 26.02.2008 19:43
von mysql tabellen die größe in bytes von bestimmten zeilen Blank Datenbanken 5 07.08.2006 15:40
HTML und while schleifen. vale PHP Tipps 2006 1 17.06.2006 21:08
[Erledigt] MYSQL Tabellen konvertieren. Datenbanken 1 11.04.2006 08:16
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MySQL Abfrage über mehrere Tabellen [Erledigt] Datenbanken 2 14.10.2005 13:37
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
While Schleifen Problem PHP Tipps 2005 9 22.05.2005 22:35
[Erledigt] MySQL Abfrage aus mehreren Tabellen Datenbanken 1 12.04.2005 17:53
mehrere mySql tabellen freitz PHP Tipps 2005 1 02.02.2005 18:08
while schleifen ($dsatz=mysql_fetch_assoc($abfrage1) stefan-miti PHP Tipps 2004 5 23.09.2004 20:46
Über PHP Script 2 MySQL Tabellen abgleichen PHP Tipps 2004 0 20.09.2004 09:32
MySQL DB Tabellen Kommentar abfragen Datenbanken 3 13.06.2004 22:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
operand select 1241 select in where, mysql while select, #1241 - operand should contain 1 column(s), mysql php select while, mysql while, mysql #1241, pmysql zwei while abfragen, 1241 operand should contain 1 column s in mysql, mysql mehrere while schleifen, php mysql 2 schleifen, mysql while mit zwei tabellen, php 2 while schleifen mysql, php mysql inhalt von zwei tabellen in einem while, mysql select while, zwei while schleifen, select in while, 2 whileschleifen in mysql, select xy while mysql php, select while mysql, while mit zwei mysql

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum