WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   SQL statement (http://www.wcm.at/forum/showthread.php?t=147364)

reichr 13.10.2004 09:40

SQL statement
 
hy!

möchte von t1 alle zeilen zurückbekommen wo in der spalte sBsArNr ein datensatz öfter als einmal vorkommt.

wie stell ich das am besten an?

mqs 13.10.2004 09:57

ich würds wahrscheinlich so machen, dass ich die stichwörter in ein feld lade, und dann die anzahl der jeweiligen auslese... und dann mit ner for schleife das ganze ausgeben.. ist evt n bisschen kompliziert gedacht..


so in der art?

PHP-Code:



$ergebnis 
mysql_query("SELECT sBsArNr FROM t1 ORDER BY sBsArNr");
while(
$row mysql_fetch_object($ergebnis))

$neweintrag=$row->sBsArNr;
 if(
$oldeintrag!=$neweintragfeld[]=$row->sBsArNr;
$oldeintrag=$neweintrag;
}

for(
$i=0;$i<count($feld);$i++)
{
$anz= @mysql_num_rows(@mysql_query("SELECT sBsArNr FROM t1 WHERE sBsArNr='$feld[]'"));
echo 
$anz;



käptn 13.10.2004 10:13

Bei MySQL könntest du das mit HAVING realiasieren, aber wenn ich mich richtig erinnere bits du MSSQL Jünger?

~

reichr 13.10.2004 10:21

@käptn

ja, wäre auf MSSQL server

mqs 13.10.2004 11:15

ok.. habt ihr einen link für optimierte mysql abfragen, weil wenn du sagst dass das einfacher geht würd mich das auch gerne interessieren.. weil mir kommt es so vor, dass ich da von vielen befehlen keine ahnung hab, die mir einiges erleichtern würden

käptn 13.10.2004 12:27

HAVING ist weit davon entfernt, um als "optimiert" bezeichnet werden zu können.

Sehe gerade, dass auch MSSQL HAVING unterstützt.

Also, etwa so:
Code:

SELECT *, COUNT(*) AS anzahl
FROM table
HAVING anzahl > 1;

~

JackLemon 13.10.2004 13:26

wozu dann eigentlich having? ist where nicht mehr 'in'? oder macht das wirklich einen unterschied?

SELECT *, COUNT(*) AS anzahl
FROM table
WHERE anzahl > 1;

käptn 13.10.2004 13:31

Der Alias "anzahl" ist zur Zeit der Evaluierung der WHERE Klausel noch nicht verfügbar.

Ah ja, ausserdem fehlt in meinem Statement eine GROUP BY Klausel.

~

JackLemon 13.10.2004 13:43

ah, hast natürlich recht. wie praktisch!

JackLemon 13.10.2004 13:57

moment: selbst mit "GROUP BY" wird dein statement nicht das machen was "reichr" wollte: mit "...wo in der spalte sBsArNr ein datensatz öfter als einmal vorkommt" hat er wohl gemeint "wo mehr als ein datensatz die selbe artikelnummer hat". kann mit deinem statement nicht gehen, weil du ja nicht alle zutreffenden rows ausspuckst sondern sie ja aggregieren möchtest (wonach denn eigentlich? alle felder außer der artikelnummer sind ja potenziell verschieden!)

ich sag nur: theta-join!

SELECT DISTINCT tab1.* FROM t1 tab1, t1 tab2 WHERE tab1.sBsArNr = tab2.sBsArNr;


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:00 Uhr.

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