| FAQ |
| Kalender |
|
|
#1 | ||
|
|||
|
Nykomling
|
Jag har en tabell som jag vill radera rader från.
Mitt problem är att jag vill kolla rader mot kolumner. Så här långt har jag kommit, funkar dock ej: Kod:
DELETE FROM entity_attributes WHERE itemid IN ( SELECT itemid FROM entity_attributes e WHERE (SELECT COUNT(*) FROM entity_attributes WHERE itemid = e.itemid AND attributeid = 280) = 1 AND (SELECT COUNT(*) FROM entity_attributes WHERE itemid = e.itemid AND attributeid = 276) = 1) Senast redigerad av PaLL3 den 2010-10-21 klockan 20:43 |
||
|
|
Svara med citat
|
|
|
#2 | ||
|
|||
|
Klarade millennium-buggen
|
Du har gjort det onödigt komplicerat för dig.
Varför köra så många querys i samma fråga? Det tar säkerligen längre tid än att göra det i separata frågor och loopa igenom det på serversidan, likaså otroligt mycket enklare att lösa problemen. |
||
|
|
Svara med citat
|
|
|
#3 | ||
|
|||
|
Nykomling
|
Ok, får testa.
Tack för svar... *EDIT* Får det icke att funka. Fattar inte problemet... Senast redigerad av PaLL3 den 2010-10-21 klockan 22:13 |
||
|
|
Svara med citat
|
|
|
#4 | ||
|
|||
|
Nykomling
|
Jag körde denna istället;
Kod:
$result = mysql_query("select itemid from entity_attributes e where(select count(*) from entity_attributes where itemid = e.itemid and attributeid = 280) = 1 and (select count(*) from entity_attributes where itemid = e.itemid and attributeid = 276) = 1");
while($row = mysql_fetch_array($result)) $list .= $row['ItemID'] . ',';
mysql_query("delete from entity_attributes where itemid in ($list)");
|
||
|
|
Svara med citat
|
|
|
#5 | ||
|
|||
|
Klarade millennium-buggen
|
Citat:
Kod:
$result = mysql_query("select distinct itemid from entity_attributes e where attributeid= 276 OR attributeid=280");
while($row = mysql_fetch_assoc($result))
$list[] = $row['itemid'];
mysql_query("delete from entity_attributes where itemid in (" . implode(',',$list) . ")");
|
||
|
|
Svara med citat
|
|
|
#6 | ||
|
|||
|
Administratör
|
Citat:
__________________
eldefors.com - Personlig (teknik)-blogg |
||
|
|
Svara med citat
|
|
|
#7 | ||
|
|||
|
Nykomling
|
Tack för hjälpen!
Och förklaringen! =) |
||
|
|
Svara med citat
|
|
|
#8 | ||
|
|||
|
Nykomling
|
Sorry for dubbelpost men;
testade precis Jonas query. Problemet var att den raderade precis ALLA rader som innhöll attributeID 280 och 276 där den egentligen bara skulle raderat raderna med attributID 280 som inte hade en matchande itemID med 276. Alltså en rad består av kollumnamn itemID, attributID. AttributID består enbart av 280 eller 276 men dessa ska ha samma itemID för att höra ihop. Och om det enbart finns en rad med antingen ett attributID 280 eller 276 men med ett unikt itemID ska det raderas... Senast redigerad av PaLL3 den 2010-10-22 klockan 09:40 |
||
|
|
Svara med citat
|
|
|
#9 | ||
|
|||
|
Nykomling
|
Ok, nu har jag kommit så här långt, tack Magnus...
![]() Kod:
$dsn = 'mysql:dbname=DBNAME;host=localhost';
$dbUser = 'USER';
$dbPassword = 'PASSWORD';
$dbh = new PDO($dsn, $dbUser, $dbPassword);
$res = $dbh->prepare('select count(itemID) as count, itemID from entity_attributes group by itemID having count <2');
$res->execute();
$result = $res->fetchAll(PDO::FETCH_COLUMN, 1);
$test = implode(' ',$result);
print_r($test);
//mysql_query("delete from entity_attributes where count(itemid) in ($test)");
$dbh = null;
|
||
|
|
Svara med citat
|
|
|
#10 | ||
|
|||
|
Nykomling
|
Fick det att fungera.
Tack, återigen, Magnus för att du visade mig vägen... |
||
|
|
Svara med citat
|
| Svara |
|
|